Techniques for evaluating server system reliability, vulnerability and component compatibility using crowdsourced server and vulnerability data

ABSTRACT

Various aspects described herein are directed to different techniques for automatically and dynamically analyzing a first subscriber system&#39;s telemetry information and crowdsourced telemetry information to dynamically evaluate at least one performance metric associated with at least one entity of the first subscriber system; and for automatically and dynamically initiating at least one modification of at least one configuration element at the first subscriber system based on the analysis of the first subscriber system telemetry information and crowdsourced telemetry information,

RELATED APPLICATION DATA

This application is a continuation application, pursuant to theprovisions of 35 U.S.C. § 120, of prior U.S. patent application Ser. No.16/197,273 (Attorney Docket No. DGRIDP001C1) titled “TECHNIQUES FOREVALUATING SERVER SYSTEM RELIABILITY, VULNERABILITY AND COMPONENTCOMPATIBILITY USING CROWDSOURCED SERVER AND VULNERABILITY DATA” byNICKOLOV et al., filed 20 Nov. 2018, the entirety of which isincorporated herein by reference for all purposes.

U.S. patent application Ser. No. 16/197,273 is a continuationapplication, pursuant to the provisions of 35 U.S.C. § 120, of priorU.S. patent application Ser. No. 15/219,789 (Attorney Docket No.DGRIDP001US) titled “TECHNIQUES FOR EVALUATING SERVER SYSTEMRELIABILITY, VULNERABILITY AND COMPONENT COMPATIBILITY USINGCROWDSOURCED SERVER AND VULNERABILITY DATA” by NICKOLOV et al., filed 26Jul. 2016, the entirety of which is incorporated herein by reference forall purposes.

U.S. patent application Ser. No. 15/219,789 claims benefit, pursuant tothe provisions of 35 U.S.C. § 119, of U.S. Provisional Application Ser.No. 62/197,141 (Attorney Docket No. DGRIDP001P), titled “TECHNIQUES FOREVALUATING SERVER SYSTEM RELIABILITY, VULNERABILITY AND COMPONENTCOMPATIBILITY USING CROWDSOURCED SERVER AND VULNERABILITY DATA”, namingNickolov et al. as inventors, and filed 27 Jul. 2015, the entirety ofwhich is incorporated herein by reference for all purposes.

BACKGROUND

The present disclosure generally relates to computer networks. Moreparticularly, the present disclosure relates to techniques forevaluating server system reliability, vulnerability and componentcompatibility using crowdsourced server and vulnerability data.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example embodiment of a server system 80 which maybe used for implementing various aspects/features described herein.

FIG. 2 shows an example embodiment of a global network portion 99 whichmay be used for implementing various aspects described herein.

FIG. 3 shows an example embodiment of a DataGrid System 301 which may beconfigured or designed to implement various DataGrid techniquesdescribed herein.

FIG. 4 shows an alternate example embodiment of a DataGrid System 401which may be configured or designed to implement various aspects ofDataGrid technology described herein.

FIGS. 5-11 illustrate various example embodiments of differentDataGrid-related procedures and/or procedural flows which may be usedfor facilitating activities relating to one or more of the DataGridaspects disclosed herein.

FIG. 12 shows an example graph 1250 (with legend 1210) (collectivelyreferred to as chart 1201) in which a range of known and unknown datapoints are plotted.

FIGS. 13-46 illustrate example screenshots of different graphical userinterfaces (GUIs) which may be used to facilitate, initiate and/orperform various operation(s) and/or action(s) relating to the DataGridTechnology.

FIGS. 47-49, 50A-B, 51, 52A-B, 53A-B, 54, 55A-B, 56, 57-63, 64A-B,65A-D, 66-69, 70A-B, 71A-B, 72, and 73A-C illustrate example screenshotsof different command line interfaces (CLIs) and/or applicationprogramming interfaces (APIs), which may be used to facilitate, initiateand/or perform various operation(s) and/or action(s) relating to theDataGrid Technology.

DESCRIPTION OF EXAMPLE EMBODIMENTS Overview

Various aspects described herein are directed to different services,methods, systems, and computer program products (collectively referredto herein as “DataGrid technology” or “DataGrid techniques”) forevaluating server system reliability, vulnerability and componentcompatibility using crowdsourced server and vulnerability data; forgenerating automated recommendations for improving server systemmetrics; and for automatically and conditionally updating or upgradingsystem packages/components.

One aspect disclosed herein is directed to different methods, systems,and computer program products for facilitating automated management of aplurality of subscriber systems communicatively coupled to a computernetwork. In at least one embodiment, various method(s), system(s) and/orcomputer program product(s) may be operable to cause at least oneprocessor to execute a plurality of instructions for: accessing firstsubscriber system telemetry information relating to an operatingenvironment of the first subscriber system; identifying, using the firstsubscriber system telemetry information, a first set of configurationelements associated with the first subscriber system; acquiringcrowdsourced telemetry information for a plurality of systems, thecrowdsourced telemetry information including information aboutattributes, characteristics and/or configuration elements relating torespective operating environments of the plurality of systems; analyzingthe first subscriber system telemetry information and the crowdsourcedtelemetry information to dynamically evaluate at least one metricassociated with at least one entity of the first subscriber system,wherein the at least one metric includes at least one performance metricassociated with the at least one entity of the first subscriber system;and automatically implementing or initiating, based on the analysis ofthe first subscriber system telemetry information and crowdsourcedtelemetry information, a first set of activities relating to managementof the first subscriber system; wherein the first set of activitiesincludes at least one activity selected from a group consisting of:automatically and dynamically generating, based on the analysis of thefirst subscriber system telemetry information and crowdsourced telemetryinformation, first subscriber system reliability information, the firstsubscriber system reliability information identifying at least oneconfiguration element of the first subscriber system which may causereliability issues at the first subscriber system; automatically anddynamically generating, based on the analysis of the first subscribersystem telemetry information and crowdsourced telemetry information,first subscriber system compatibility information, the first subscribersystem compatibility information identifying at least one configurationelement installed at the first subscriber system which may causecompatibility issues at the first subscriber system; automatically anddynamically generating, based on the analysis of the first subscribersystem telemetry information and crowdsourced telemetry information, thefirst subscriber system vulnerability information identifying at leastone configuration element installed at the first subscriber system whichmay cause vulnerability issues at the first subscriber system;automatically and dynamically generating, based on the analysis of thefirst subscriber system telemetry information and crowdsourced telemetryinformation, at least one configuration recommendation relating to arecommended modification of at least one configuration element at thefirst subscriber system; automatically and dynamically initiating, basedon the analysis of the first subscriber system telemetry information andcrowdsourced telemetry information, at least one modification of atleast one configuration element at the first subscriber system; andautomatically and dynamically preventing, based on the analysis of thefirst subscriber system telemetry information and crowdsourced telemetryinformation, initiation of at least one modification of at least oneconfiguration element at the first subscriber system.

Other aspects disclosed herein are directed to different methods,systems, and computer program products for facilitating automatedmanagement of a plurality of subscriber systems communicatively coupledto a computer network. In at least one embodiment, various method(s),system(s) and/or computer program product(s) may be operable to cause atleast one processor to execute a plurality of instructions for:accessing first subscriber system telemetry information relating to anoperating environment of a first subscriber system; identifying, usingthe first subscriber system telemetry information, a first set ofconfiguration elements associated with the first subscriber system;acquiring crowdsourced telemetry information for a plurality of systems,the crowdsourced telemetry information including information aboutattributes, characteristics and/or configuration elements relating torespective operating environments of the plurality of systems; analyzingthe first subscriber system telemetry information and the crowdsourcedtelemetry information to dynamically evaluate at least one metricassociated with at least one entity of the first subscriber system,wherein the at least one metric includes at least one metric selectedfrom a group consisting of: performance, reliability, security,operation, functionality, vulnerability, compatibility, capability,maintainability, stability, and utility; and automatically implementingor initiating, based on the analysis of the first subscriber systemtelemetry information and crowdsourced telemetry information, a firstset of activities relating to management of the first subscriber system;wherein the first set of activities includes one or more of thefollowing (or combinations thereof): automatically and dynamicallygenerating, based on the analysis of the first subscriber systemtelemetry information and crowdsourced telemetry information, firstsubscriber system reliability information, the first subscriber systemreliability information identifying at least one configuration elementof the first subscriber system which may cause reliability issues at thefirst subscriber system; automatically and dynamically generating, basedon the analysis of the first subscriber system telemetry information andcrowdsourced telemetry information, first subscriber systemcompatibility information, the first subscriber system compatibilityinformation identifying at least one configuration element installed atthe first subscriber system which may cause compatibility issues at thefirst subscriber system; automatically and dynamically generating, basedon the analysis of the first subscriber system telemetry information andcrowdsourced telemetry information, the first subscriber systemvulnerability information identifying at least one configuration elementinstalled at the first subscriber system which may cause vulnerabilityissues at the first subscriber system; automatically and dynamicallygenerating, based on the analysis of the first subscriber systemtelemetry information and crowdsourced telemetry information, at leastone configuration recommendation relating to a recommended modificationof at least one configuration element at the first subscriber system;automatically and dynamically initiating, based on the analysis of thefirst subscriber system telemetry information and crowdsourced telemetryinformation, at least one modification of at least one configurationelement at the first subscriber system; and/or automatically anddynamically preventing, based on the analysis of the first subscribersystem telemetry information and crowdsourced telemetry information,initiation of at least one modification of at least one configurationelement at the first subscriber system.

According to different embodiments, the first subscriber system maycorrespond to a physical server, a virtual server, a virtual machine, aswitch, a router, a mobile device, a network device, a printer, or acontainer.

In at least one embodiment, the telemetry information may includevarious types of information relating to an operating environment of afirst subscriber system including, for example, one or more of thefollowing (or combinations thereof): package version information,package name information, IP address information, open port information,network connection information, configuration parameter information, OSversion information, CPU consumption information, memory consumptioninformation, network service end connection information, configurationelement information, configuration parameter value information, rebootevent information, crash event information, error event information,system health status information, system or application log eventinformation, and successful event information.

According to different embodiments, a configuration element maycorrespond to one or more of the following: a system component ordevice, a package name, a package version, a package release, acontainer name, a container version, a virtual machine, a systemattribute, a system characteristic, an operating system name, anoperating system version, an operating system release, a configurationparameter or setting, a BIOS version, a driver name, a driver version,and/or a firmware version.

In at least one embodiment, the at least one configurationrecommendation may include, but are not limited to, one or more of thefollowing (or combinations thereof): a package change recommendation, apackage version change recommendation, a code change recommendation, asystem attribute change recommendation, a system characteristic changerecommendation, a system configuration parameter change recommendation,a component version change recommendation, a container changerecommendation, an operating system change recommendation, a componentchange recommendation, a virtual machine change recommendation, aversion upgrade recommendation, and a version downgrade recommendation.

In at least some embodiments, the automated modification of at least oneconfiguration element may include, but are not limited to, one or moreof the following activities (or combinations thereof): change of systemcomponent, change of system component version, change of configurationsetting or parameter, change of system package, change of system packageversion, change of system container, change of system container version,change of OS version, change of virtual machine, change of systemconfiguration parameter, change of system attribute, change of systemresource allocation, and/or change of system operational parameter.

According to different embodiments, various method(s), system(s) and/orcomputer program product(s) may be operable to cause at least oneprocessor to execute instructions for causing at least one component ofthe computer network to automatically initiate a first conditionalmodification of a first configuration element at the first subscribersystem if it is determined that specific threshold criteria has beensatisfied for allowing the conditional modification of the firstconfiguration element to proceed; automatically prevent initiation of afirst conditional modification of a first configuration element at thefirst subscriber system if it is determined that specific thresholdcriteria has not been satisfied for allowing the conditionalmodification of the first configuration element to proceed.

According to different embodiments, the plurality of subscriber systemsmay further comprise a second subscriber system, and various method(s),system(s) and/or computer program product(s) may be operable to cause atleast one processor to execute instructions for causing at least onecomponent of the computer network to automatically initiate, based onthe analysis of the crowdsourced telemetry information, a second set ofactivities relating to management of the second subscriber system,wherein the second set of activities includes at least one activityselected from a group consisting of: automatically and dynamicallygenerating, based on the analysis of the crowdsourced telemetryinformation, second subscriber system reliability information, thesecond subscriber system reliability information identifying at leastone configuration element of the second subscriber system which maycause reliability issues at the second subscriber system; automaticallyand dynamically generating, based on the analysis of the crowdsourcedtelemetry information, second subscriber system compatibilityinformation, the second subscriber system compatibility informationidentifying at least one configuration element installed at the secondsubscriber system which may cause compatibility issues at the secondsubscriber system; automatically and dynamically generating, based onthe analysis of the crowdsourced telemetry information, the secondsubscriber system vulnerability information identifying at least oneconfiguration element installed at the second subscriber system whichmay cause vulnerability issues at the second subscriber system;automatically and dynamically generating, based on the analysis of thecrowdsourced telemetry information, at least one configurationrecommendation relating to a recommended modification of at least oneconfiguration element at the second subscriber system; automatically anddynamically initiating, based on the analysis of the crowdsourcedtelemetry information, at least one modification of at least oneconfiguration element at the second subscriber system; and/orautomatically and dynamically preventing, based on the analysis of thecrowdsourced telemetry information, initiation of at least onemodification of at least one configuration element at the secondsubscriber system.

In some embodiments, at least a portion of the various DataGridTechnology aspects described herein may be implemented as a SaaS servicecombining crowdsourced server and vulnerability data with big-dataanalytics to provide visibility into server reliability, vulnerabilityand change confidence, such as, for example, confidence in thelikelihood that server configuration changes may have a good outcome(e.g., before the contemplated changes are made/implemented).

Various features of the DataGrid Technology may also be configured ordesigned to provide functionality for identifying troublesomeconfigurations, such as, for example, one or more of the following (orcombinations thereof):

-   -   When a configuration has been previously determined or changed        without recourse to the DataGrid service.    -   After this service has received new data impacting the        confidence of a configuration such as new vulnerability data.    -   Data indicating the likelihood of stability or performance        issues with a configuration which emerges from analysis of        growing data sets of crowdsourced server information.    -   Etc.

One aspect disclosed herein introduces the concept of a DataGridReliability Index Score (DGRI Score) which, in one embodiment, may beimplemented as a single number representing a statistical assessment ofthe confidence of a particular server configuration, or of a particularpackage. As used herein, the terms “server” and/or “system” may refer toa physical service, a virtual server, a Docker container, and/or othersimilar software execution environment(s)

In at least one embodiment, the DGRI Score may be implemented to bedynamic and predictive rather than forensic. For example, in oneembodiment, the DGRI Score is programmatically calculated from a large,and growing, set of historical data crowdsourced from many servers. Thedetermination of a DGRI Score may also be affected by other data sourcessuch as publicly available package vulnerability data, packageissue-tracking databases, and test results published for particularpackage versions. While other data sources aside from the crowdsourcedserver data which is collected by the DataGrid service may be useful forrefining DGRI Scores, this data is not essential for implementing one ormore of the various DataGrid aspects described herein.

Examined as a system, at least one embodiment of the DataGridfunctionality may be implemented as components which are embodied withthe DataGrid application, embodied with an individual servercontributing crowdsourced data, and/or embodied elsewhere in theDataGrid System (e.g., typically integrating with differentconfiguration management tools).

In some embodiments, the DataGrid Application may be implemented using adedicated virtual private cloud and is deployed over a collection ofvirtual machines within this cloud. In one embodiment, the DataGridApplication may be configured or designed to expose an API (e.g., RESTAPI) which may be used to feed configuration and signal data for serversbelonging to different customer accounts to the application.

In some embodiments, configuration data may include, but are not limitedto, one or more of the following (or combinations thereof):

-   -   Server identifiers such as the FQDN (Fully Qualified Domain        Name).    -   Unique Machine IDs.    -   Operating system identifiers such as name and version.    -   Identifiers for each installed package such as name, version,        release, architecture, vendor and dependencies.    -   And/or other types of configurable parameters/criteria.

In some embodiments, Signal Data may include indicators of server eventssuch as, for example, one or more of the following (or combinationsthereof):

-   -   Reboot.    -   Crash.    -   Log error.    -   Configuration rollback.    -   Online.    -   Offline.    -   And/or other types of signals or indicators.

In some embodiments, the DataGrid Application processes this data andstores it in a database, where, in general, configurations areassociated with a timespan of operation of one or more servers andsignals are associated to a particular time of the operation of a serveror to the configuration associated to that server at that time. Somesignals are interpreted to increase confidence in a given configuration(e.g., service going on-line), while other signals are interpreted todecrease confidence in the configuration (e.g., crash).

In some embodiments, the DataGrid Application also exposes a REST APIwhich may be used to get information about servers, configurations andvulnerabilities pertaining to a particular customer account, includingthe DGRI Scores for configurations and other entities. The DataGridApplication periodically checks public feeds of CVE (CommonVulnerabilities and Exposures) data and package changelogs, andprocesses this data, storing it in a database and using it to associatevulnerabilities to packages and to configurations, thereby impacting theDGRI Score for configurations and packages. The DataGrid Applicationalso includes an analytics engine which analyzes server, configuration,signal, and vulnerability data in order to determine the DGRI Scores forconfigurations or other entities such as packages. The DataGridApplication also includes a monitoring server which processes signalsreceived in the form of email from monitoring systems.

In some embodiments, components of the DataGrid System which areembodied with an individual server contributing crowdsourced data may bereferred to as “subscriber component(s)” or “DataGrid Subscribercomponent(s)”. In some embodiments, the DataGrid Subscriber component(s)may include, but are not limited to, one or more of the following (orcombinations thereof):

-   -   A command line utility for enabling local and/or remote users to        query the DataGrid Application API to get information about        servers, configurations and vulnerabilities pertaining to a        particular account.    -   A program which sends configuration data to the application API.    -   A program which sends signal data to the application API.    -   A program which monitors the server system log and uses this        information to send signals (e.g., crash) to the application        API.    -   A graphical user interface dashboard for displaying at-a-glance        information about systems. In one embodiment, the dashboard        program is packaged in a Docker container for easy deployment        within the customer's environment    -   A program for sending various notifications when certain        user-configured configuration and/or vulnerability criteria are        met, prompting user intervention in modifying configurations,        approving recommended changes or reviewing automatically applied        changes; notifications may include e-mail, SMS, “chatops”        systems such as IRC and Slack, web hooks for integrating with        other applications, etc.    -   A plugin for a command-line package management utility such as        yum. In one embodiment, this plugin intercepts configuration        change operations before they are performed and queries the        DataGrid Application API for the DGRI Score and other        information relevant to the confidence of the proposed        configuration changes. This information may be used, either by a        user or programmatically, to determine whether or not to proceed        with the proposed configuration changes.    -   Etc.

In some embodiments, components of the DataGrid System which areembodied with configuration management tools may include, but are notlimited to, one or more of the following (or combinations thereof):

-   -   A command line utility for querying the DataGrid Application API        to get information about servers, configurations and        vulnerabilities pertaining to one or more specified accounts(s).    -   Plugins, modules or other software+hardware component(s), such        as Ansible modules and playbooks, which enable the configuration        management tool to perform operations particular to or related        to the DataGrid System. For example, in one embodiment, the        DataGrid Ansible playbooks may be used to cause configuration        data or signals to be sent to the DataGrid API for a group of        servers being managed with Ansible, or to get the DGRI Score for        servers, or to install or uninstall packages on servers (e.g.,        based on the resulting DGRI Score).

While one aspect of the DataGrid Technology is directed at improving theconfidence in and outcome of server configuration changes, the methodsdescribed herein relating to crowdsourcing server configuration data andserver event signals, and using this data to perform analyses ofpackages and configurations (e.g., including predictive analyses ofserver configuration changes), may readily be extended to include manyother kinds of crowdsourced server metrics such as, for example, one ormore of the following (or combinations thereof):

-   -   Resource usage(s).    -   Operational load(s) (e.g., CPU, disk and network load).    -   Bios version(s).    -   Chipset(s).    -   Kernel or driver compatibilities and performance(s).    -   Virtualization driver(s).    -   Etc.

At least a portion of this data may be analyzed not only to provideinsight into the confidence of configurations and proposed configurationchanges, but also to propose changes, whether in server configuration orresource allocation or any other characteristic of server composition orfunctioning. In this way the DataGrid System facilitates automation ofsuch changes.

As more and more systems in our lives become controlled by connectedcomputers and these computers use complex, componentized softwareconfigurations, in one embodiment, the DataGrid technology can beapplied to networked systems beyond servers, including but not limitedto:

-   -   Desktop, laptop, tablet computers.    -   Mobile devices, such as smartphones and phablets.    -   Person-area networks and wearable devices, such as smartwatches,        virtual reality and augmented reality headsets and augmented        human sense devices.    -   Network routers, switches, firewalls, load balancers, storage        area networks/network-attached storage and other IT appliances.    -   Medical devices such as remote surgery robots and implanted        computers.    -   Embedded systems such as Automated Teller Machines and kiosks.    -   Connected devices such as various Internet-of-Things devices,        like water pumps, lighting systems, smart home appliances (e.g.,        refrigerators, washing machines, etc.), physical security        monitoring and intrusion-detection systems (such as home or        industrial security).    -   Industrial or factory machinery, such as heating, ventilation        and air conditioning systems (HVAC), computer numerical control        (CNC) mills and lathes.    -   Connected computer-controlled components in transportation        systems, such as cars, airplanes, ships, space stations, as well        as transportation infrastructure such as road barriers, traffic        lights, toll booths, control towers, etc.    -   Manufacturing and/or home assistance robot devices.    -   Etc.

Additional objects, features and advantages of the various aspectsdescribed herein will become apparent from the following description ofits preferred embodiments, which description should be taken inconjunction with the accompanying drawings.

DETAILED DESCRIPTION

One or more different inventions may be described in the presentapplication. Further, for one or more of the invention(s) describedherein, numerous embodiments may be described in this patentapplication, and are presented for illustrative purposes only. Thedescribed embodiments are not intended to be limiting in any sense. Oneor more of the invention(s) may be widely applicable to numerousembodiments, as is readily apparent from the disclosure. Theseembodiments are described in sufficient detail to enable those skilledin the art to practice one or more of the invention(s), and it is to beunderstood that other embodiments may be utilized and that structural,logical, software, electrical and other changes may be made withoutdeparting from the scope of the one or more of the invention(s).Accordingly, those skilled in the art will recognize that the one ormore of the invention(s) may be practiced with various modifications andalterations. Particular features of one or more of the invention(s) isdescribed with reference to one or more particular embodiments orFigures that form a part of the present disclosure, and in which areshown, by way of illustration, specific embodiments of one or more ofthe invention(s). It should be understood, however, that such featuresare not limited to usage in the one or more particular embodiments orFigures with reference to which they are described. The presentdisclosure is neither a literal description of all embodiments of one ormore of the invention(s) nor a listing of features of one or more of theinvention(s) that must be present in all embodiments.

Headings of sections provided in this patent application and the titleof this patent application are for convenience only, and are not to betaken as limiting the disclosure in any way. Devices that are incommunication with each other need not be in continuous communicationwith each other, unless expressly specified otherwise. In addition,devices that are in communication with each other may communicatedirectly or indirectly through one or more intermediaries. A descriptionof an embodiment with several components in communication with eachother does not imply that all such components are required. To thecontrary, a variety of optional components are described to illustratethe wide variety of possible embodiments of one or more of theinvention(s). Further, although process steps, method steps, algorithmsor the like is described in a sequential order, such processes, methodsand algorithms is configured to work in alternate orders. In otherwords, any sequence or order of steps that is described in this patentapplication does not, in and of itself, indicate a requirement that thesteps be performed in that order. The steps of described processes maybe performed in any order practical. Further, some steps is performedsimultaneously despite being described or implied as occurringnon-simultaneously (e.g., because one step is described after the otherstep). Moreover, the illustration of a process by its depiction in adrawing does not imply that the illustrated process is exclusive ofother variations and modifications thereto, does not imply that theillustrated process or any of its steps are necessary to one or more ofthe invention(s), and does not imply that the illustrated process ispreferred.

When a single device or article is described, it will be readilyapparent that more than one device/article (whether or not theycooperate) is used in place of a single device/article. Similarly, wheremore than one device or article is described (whether or not theycooperate), it will be readily apparent that a single device/article isused in place of the more than one device or article. The functionalityand/or the features of a device is alternatively embodied by one or moreother devices that are not explicitly described as having suchfunctionality/features. Thus, other embodiments of one or more of theinvention(s) need not include the device itself. Techniques andmechanisms described herein will sometimes be described in singular formfor clarity. However, it should be noted that particular embodimentsinclude multiple iterations of a technique or multiple instantiations ofa mechanism unless noted otherwise.

Almost all modern enterprise makes use of physical or virtual computerservers. Wherever these servers may be located they need to be managed.An important aspect of this management includes server configurationmanagement, including the management of changes to the operating systemkernel and software packages. For example, a modern Linux operatingsystem may include several thousand packages. These packages may bechanged individually in accord with their dependencies, or in groups, oras part of a major change to the operating system. These changes mayinclude installation, configuration, upgrading to newer versions,downgrading to older versions, or removal. Existing configurationmanagement tools such as Chef, Puppet and Ansible are often used tocontrol, streamline and automate the configuration and maintenance ofgroups of servers. However, as described in greater detail herein,currently existing server configuration management tools havesignificant limitations. Moreover, using currently existing serverconfiguration management tools, server configuration changes can oftenbe a troublesome undertaking with unforeseen and potentially significantconsequences. This is further exacerbated by the fact that organizationswith substantial numbers of servers often make tens of thousands of suchchanges each month.

Server configuration changes may significantly impact the functioning ofoperating systems or applications. The business impact of such changeson production systems may be significant. Configuration changes mayimpair or break essential functionality, or introduce securityvulnerabilities, or introduce problems difficult to diagnose or evenreproduce, or which may not become evident until some while after theirintroduction. There is often little visibility into the impact of suchchanges beforehand.

In order to improve the likelihood of a good outcome, it is desirable toprovide server management and configuration services which includefeatures and/or functionality such as, for example, one or more of thefollowing (or combinations thereof):

-   -   Functionality for accessing technical resources such as kernel        and package release notes or websites which discuss server        management or discuss particular packages or operating systems        and their potential defects, vulnerabilities and limitations,        individually or in combination.    -   Functionality for accessing the advice of experts who have        relevant experience and expertise, including through online        forums and email lists.    -   Functionality for testing such changes before deployment to        production systems.    -   Functionality for using configuration management tools to obtain        consistent results and provide for managed rollbacks.    -   Functionality for using monitoring tools such as Nagios or        Ganglia to monitor resources and performance of servers,        networks, applications and services. These tools may improve        visibility into the impact of server configuration changes after        such changes have been made.    -   Functionality for limiting configuration changes to a set of        known “good” configurations which have been carefully vetted.    -   Functionality for limiting the frequency of configuration        changes.    -   Functionality for using configuration management databases to        track the composition, change in composition and relationship        among information system resources, including server        configurations.    -   Etc.

FIG. 1 illustrates an example embodiment of a server system 80 which maybe used for implementing various aspects/features described herein. Inat least one embodiment, the server system 80 includes at least onenetwork device 60, and at least one storage device 70 (such as, forexample, a direct attached storage device). In one embodiment, serversystem 80 may be suitable for implementing at least some of the DataGridtechniques described herein.

In according to one embodiment, network device 60 may include a mastercentral processing unit (CPU) 62, interfaces 68, and one or moreinterconnects/busses (e.g., PCI or PCI Express bus 59, systeminterconnect(s) 67 (e.g., AMD's HyperTransport, Intel's QuickPathInterconnect)). When acting under the control of appropriate software orfirmware, the CPU 62 may be responsible for implementing specificfunctions associated with the functions of a desired network device. Forexample, when configured as a server, the CPU 62 may be responsible foranalyzing packets; encapsulating packets; forwarding packets toappropriate network devices; instantiating various types of virtualmachines, virtual interfaces, virtual storage volumes, virtualappliances; etc. The CPU 62 preferably accomplishes at least a portionof these functions under the control of software including an operatingsystem (e.g. Linux), and any appropriate system software (such as, forexample, AppLogic™ software).

CPU 62 may include one or more processors 63 such as, for example, oneor more processors from the AMD, Motorola, Intel, ARM and/or MIPSfamilies of microprocessors. In an alternative embodiment, processor 63may be specially designed hardware for controlling the operations ofserver system 80. In a specific embodiment, a memory 61 (such asnon-volatile RAM and/or ROM) also forms part of CPU 62. However, theremay be many different ways in which memory could be coupled to thesystem. Memory block 61 may be used for a variety of purposes such as,for example, caching and/or storing data, programming instructions, etc.

The interfaces 68 may be typically provided as interface cards(sometimes referred to as “line cards”). Alternatively, one or more ofthe interfaces 68 may be provided as on-board interface controllersbuilt into the system motherboard. Generally, they control the sendingand receiving of data packets over the network and sometimes supportother peripherals used with the server system 80. Among the interfacesthat may be provided may be FibreChannel interfaces, Ethernetinterfaces, frame relay interfaces, cable interfaces, DSL interfaces,token ring interfaces, Infiniband interfaces, and the like. In addition,various very high-speed interfaces may be provided, such as Gigabit and10 Gigabit Ethernet interfaces, ATM interfaces, HSSI interfaces, POSinterfaces, FDDI interfaces, ASI interfaces, DHEI interfaces and thelike. Other interfaces may include one or more wireless interfaces suchas, for example, 802.11 (WiFi) interfaces, 802.15 interfaces (includingBluetooth™), 802.16 (WiMax) interfaces, 802.22 interfaces, Cellularstandards such as CDMA interfaces, CDMA2000 interfaces, WCDMAinterfaces, TDMA interfaces, Cellular 3G interfaces, etc.

Generally, one or more interfaces may include ports appropriate forcommunication with the appropriate media. In some cases, they may alsoinclude an independent processor and, in some instances, volatile RAM.The independent processors may control such communications intensivetasks as packet switching, media control and management. By providingseparate processors for the communications intensive tasks, theseinterfaces allow the master microprocessor 62 to efficiently performrouting computations, network diagnostics, security functions, etc.

In at least one embodiment, some interfaces may be configured ordesigned to allow the server system 80 to communicate with other networkdevices associated with various local area network (LANs) and/or widearea networks (WANs). Other interfaces may be configured or designed toallow network device 60 to communicate with one or more direct attachedstorage device(s) 70.

Although the system shown in FIG. 1 illustrates one specific networkdevice described herein, it is by no means the only network devicearchitecture on which one or more embodiments can be implemented. Forexample, an architecture having a single processor that handlescommunications as well as routing computations, etc. may be used.Further, other types of interfaces and media could also be used with thenetwork device.

Regardless of network device's configuration, it may employ one or morememories or memory modules (such as, for example, memory block 65,which, for example, may include random access memory (RAM)) configuredto store data, program instructions for the general-purpose networkoperations and/or other information relating to the functionality of thevarious DataGrid techniques described herein. The program instructionsmay control the operation of an operating system and/or one or moreapplications, for example. The memory or memories may also be configuredto store data structures, and/or other specific non-program informationdescribed herein.

Because such information and program instructions may be employed toimplement the systems/methods described herein, one or more embodimentsrelates to machine readable media that include program instructions,state information, etc. for performing various operations describedherein. Examples of machine-readable storage media include, but are notlimited to, magnetic media such as hard disks, floppy disks, andmagnetic tape; optical media such as CD-ROM disks; magneto-optical mediasuch as floptical disks; and hardware devices that may be speciallyconfigured to store and perform program instructions, such as read-onlymemory devices (ROM) and random access memory (RAM). Some embodimentsmay also be embodied in transmission media such as, for example, acarrier wave travelling over an appropriate medium such as airwaves,optical lines, electric lines, etc. Examples of program instructionsinclude both machine code, such as produced by a compiler, and filescontaining higher level code that may be executed by the computer usingan interpreter.

Generally, the DataGrid techniques described herein may be implementedon software and/or hardware. For example, they can be implemented in anoperating system kernel, in a separate user process, in a librarypackage bound into network applications, on a specially constructedmachine, over a utility computing grid, on a network interface card,etc. In a specific embodiment of this invention, the technique describedherein may be implemented in software such as an operating system or inan application running on an operating system.

A software or software/hardware hybrid implementation of variousDataGrid related techniques may be implemented on a general-purposeprogrammable machine selectively activated or reconfigured by a computerprogram stored in memory. Such programmable machine may be a networkdevice designed to handle network traffic, such as, for example, arouter, a switch and/or a server. Such network devices may have multiplenetwork interfaces including frame relay and ISDN interfaces, forexample. A general architecture for some of these devices will appearfrom the description given below. In other embodiments, some DataGridtechniques described herein may be implemented on a general-purposenetwork host machine such as a personal computer, server, orworkstation. Further, at least one embodiment may be at least partiallyimplemented on a card (e.g., an interface card) for a network device ora general-purpose computing device.

FIG. 2 shows an example embodiment of a global network portion 99 whichmay be used for implementing various aspects described herein. Asillustrated in the example of FIG. 2, global network portion 99 mayinclude a plurality of different data centers (e.g., 85 a-c) which, forexample, may reside at different physical and/or geographic locations.For example, in one embodiment, data center 85 a may be located in theUnited States, data center 85 b may be located in Europe, and datacenter 85 c may be located in Asia. In at least one embodiment, each ofthe different data centers may be communicatively coupled to each othervia a wide area network (e.g., WAN 90) such as, for example, theInternet or world wide web.

In at least one embodiment, each data center may include a respectiveplurality of server systems 81 (herein “servers”) which may becommunicatively coupled together via one or more local area networks(e.g., LAN1 91 and/or LAN2 92). In at least one embodiment, at least aportion of the data center servers may include at least a portion offeatures and/or components similar server system 80 of FIG. 1.

According to specific embodiments, at least some of the data centers mayinclude several different types of local area networks (e.g., LANs 91,92) such as, for example, a backbone LAN which may be utilized forproviding localized communication between various local network elementswithin a given data center, an internet LAN which, for example, may beutilized for providing WAN or Internet access to various local networkelements within the data center.

In at least one embodiment, one or more of the data centers may beoperable to host a variety of different types of system applicationsand/or other software. Examples of such applications may include, butare not limited to, one or more of the following (or combinationsthereof):

-   -   Website applications/software (e.g., applications/software use        for implementing portions of a website such as, for example,        www.uspto.gov, youtube.com, etc.);    -   Web-based applications/services (such as, for example, those        provided by Mircosoft® Office Online, office.microsoft.com,        Google's search, Salesforce.com, etc.);    -   Web-based application services (such as, for example, Amazon's        S3 storage service or Google's adwords);    -   General purpose business applications (such as, for example,        Oracle, SAP, enterprise resource planning, customer relationship        management, payroll, accounting, human resources, logistics,        stock trading such as www.schwab.com, etc.);    -   Communications applications (such as, for example, Asterisk or        Skype);    -   Video on-demand applications;    -   High-performance-computing applications;    -   Online gaming systems (such as, for example, Blizzard's World of        Warcraft);    -   Online desktops;    -   Network services, such as, for example, the Domain Name Service,        proxy servers, e-mail filters, e-mail servers, etc.;    -   Video-conferencing services (such as, for example, Cisco's        WebEx);    -   Service-oriented architecture and XML web service components        (such as, for example, the Aivea eShip Web Service at        www.aivea.com/eshipinfo.htm, and/or the GeoIP lookup service at        www.hostip.info/use.html)    -   E-commerce applications such (such as, for example, Amazon.com,        e-Bay and Apple iTunes)    -   Parallel computation applications (such as, for example,        applications based on MPI interface or MapReduce interfaces like        Hadoop);    -   Data mining applications (such as, for example, customer loyalty        databases, mapping software; video, image and sound processing        and conversion);    -   In-the-cloud services (like Google's MapReduce);    -   Content delivery networks, including but not limited to        applications that provide distributed content by caching or        other methods closer to the consumer;    -   DataGrid Component(s)/Application(s) providing functionality for        monitoring and acquiring various types of information from the        data center system(s)/component(s), and for reporting/providing        at least a portion of the acquired information to the DataGrid        System 98. For example, in at least one embodiment, one or more        DataGrid Component(s)/Application(s) may include DataGrid        Subscriber component(s) configured or designed to provide        functionality for monitoring and acquiring various types of        information from the data center system(s)/component(s) such as,        for example, one or more of the following (or combinations        thereof):        -   Configuration data.        -   Signal data.        -   Operating information about data center servers,            configurations and vulnerabilities.        -   Token Map Repository information.        -   Customer account information, at least a portion of which            may be anonymized.        -   Etc.    -   Etc.

Additionally, in at least one embodiment, one or more of the datacenters may be operable to provide various types of database servicessuch as, for example, data storage, database queries, data access, etc.

Additionally, by utilizing virtualization software, one or more of theservers of a given data center may be implemented as a server grid whichmay be operable to enable utility computing for distributedapplications. Additionally, in at least one embodiment, multiple servergrids from different data centers may be linked together to form avirtual global server grid which may be used to facilitate utilitycomputing for distributed applications.

In at least one embodiment, a distributed application may becharacterize as an application made up of distinct components (e.g.,virtual appliances, virtual machines, virtual interfaces, virtualvolumes, virtual network connections, etc.) in separate runtimeenvironments. In at least one embodiment, different ones of the distinctcomponents of the distributed application may be hosted or deployed ondifferent platforms (e.g., different servers) connected via a network.In some embodiments, a distributed application may be characterize as anapplication that runs on two or more networked computers.

In the example of FIG. 2, users (e.g., at subscriber systems and/orother network devices) may be able to access one or more of the datacenters (and/or associated data center application(s)/server(s)) via theWAN 90. Additionally, as explained in greater detail below, one or moreof the data centers may include hardware/software for implementing aDataGrid System 98 which may be used to provide users and/or datacenters with various types of different functionalities. In at least oneembodiment, the global network 99 may be collectively referred to as aDataGrid network.

In at least one embodiment, one aspect of the various DataGridtechniques described herein may be directed to a cloud-based computingservice. For example, in one embodiment, one or more DataGrid-relatedservices may be implemented as a global service which, for example, maybe operable to provide computing resources to users according to variouspricing models (such as, for example, subscription model, pay-as-you-gomodel, etc.). In one embodiment, the service(s) may be operated by abusiness entity, and the computing resources may be provided by thebusiness entity's hosting partners or other service subscribers.

Example Embodiments of DataGrid System Architecture(s)

FIG. 3 shows an example embodiment of a DataGrid System 301 which may beconfigured or designed to implement various DataGrid techniquesdescribed herein. For the purposes of illustration, various componentsillustrated in the DataGrid System of FIG. 3 may include, but are notlimited to, one or more of the following (or combinations thereof):

-   -   Subscriber Servers: The Subscriber Servers 300 may be configured        or designed to include functionality for sending configuration        and signal data to the Subscriber Gateways 310 and for querying        the API 330 to get information about servers, configurations and        vulnerabilities pertaining to a particular account.    -   Configuration Management Tools: Components of the DataGrid        System embodied with Configuration Management Tools 301 may be        configured or designed to include functionality for: querying        the API 330 to get information about servers, configurations and        vulnerabilities pertaining to a particular account; causing        Subscriber Servers 300 to send configuration or signal data to        the Subscriber Gateways 310; installing or uninstalling packages        on Subscriber Servers 300.    -   Monitoring Tools: Monitoring Tools 302 may be configured or        designed to include functionality for sending email notification        of service availability events (e.g., offline or online) to the        application Email Server 344, and for sending signals directly        to the Subscriber Gateways 310 (e.g., using webhooks or API        calls).    -   Log Aggregators: Components of the DataGrid System embodied with        log aggregators 303 may be configured or designed to include        functionality for sending signal data to the Subscriber Gateways        310.    -   Subscriber Gateways: The Subscriber Gateways 310 provide        interface to the DataGrid service. As shown in the example of        FIG. 3, the Subscriber Gateways 310 functionality comprises        Configuration Collection 311, Signal Collection 312,        Anonymization 313, tokenization (see Token Map Repository 314),        and Transport Encryption 315. Each instance of a subscriber        gateway provides interface for a different set of customer        accounts (e.g., all servers associated to a particular account        communicate with the same subscriber gateway instance, whereas        all subscriber gateway instances communicate with the same        back-end services); in some embodiments, one or more Subscriber        Gateways may be shared by multiple customer accounts.    -   Configuration Collection: Configuration Collection 311 may be        configured or designed to include functionality for collecting        configuration data from Subscriber Servers 300, which data is        anonymized (see Anonymization 313) before it is sent (see        Transport Encryption 315) to the Back-end Services 320. In some        embodiments, the Configuration Collection 311 may be configured        or designed to include functionality for receiving configuration        information sent spontaneously by the Subscriber Servers 300    -   Signal Collection: Signal Collection 312 may be configured or        designed to include functionality for collecting signal data        from Subscriber Servers 300, which data is anonymized (see        Anonymization 313) before it is sent (see Transport Encryption        315) to the Back-end Services 320. The Signal Collection 312 may        also be configured to receive signals from the Monitoring Tools        302, Configuration Management Tools 301, Log Aggregators 303 and        other customer systems that may have information about the        Subscriber Servers 300.    -   Anonymization: Anonymization 313 may be configured or designed        to include functionality for anonymizing collected configuration        and signal data using a per-account token dictionary (see Token        Map Repository 314). In some embodiments, the Anonymization 313        may use encryption (e.g., symmetric cypher) to create reversible        tokens and not use Token Map Repository 314    -   Token Map Repository: The Token Map Repository 314 may be        configured or designed to include functionality for tokenization        of sensitive data (e.g., in collected configurations and        signals).    -   Transport Encryption: Transport Encryption 315 may be configured        or designed to include functionality for encryption of data        being passed over a network (e.g., flowing between the        Subscriber Gateways 310 and the Back-end Services 320,        Subscriber Servers 300, Configuration Management Tools 301,        Monitoring Tools 302, or Log Aggregators 303).    -   Back-end Services: The Back-end Services 320 provides back-end        services to the DataGrid System. As shown in the example of FIG.        3, the Back-end Services 320 comprises that functionality        provided by components 321-335. In some embodiments, the        Back-end Services 320 may further comprise the components 340,        341, 342, 343 and/or 344.    -   Configuration Feed: Configuration Feed 321 may be configured or        designed to include functionality for receiving configuration        data from the Subscriber Gateways 310 (and/or the Subscriber        Servers 300 directly) and storing this data in the Object        Repository 340. In some embodiments, the Configuration Feed 321        may further receive configuration data directly from the        Subscriber Servers 300, the Configuration Management Tools 301        and/or other systems with purview of the configuration of the        Subscriber Servers 300.    -   Signal Feed: Signal Feed 322 may be configured or designed to        include functionality for receiving signal data from the        Subscriber Gateways 310 and storing this data in the Object        Repository 340. In some embodiments, the Signal Feed 322 may        further receive signal data directly from the Subscriber Servers        300, the Configuration Management Tools 301 and/or other systems        with purview of the configuration of the Subscriber Servers 300.    -   Vulnerability Feed: Vulnerability Feed 323 may be configured or        designed to include functionality for retrieving vulnerability        data (e.g., in the form of CVE (Common Vulnerabilities and        Exposures) identifiers and metrics) from the Vulnerability        Database 342 (e.g., the NIST (National Institute of Standards        and Technology) NVD (National Vulnerability Database) CVE feed),        and storing this data in the DG Database Repository 334.        According to different embodiments, vulnerability data may be        obtained from various sources, including, for example: 3^(rd)        Party Published Vulnerability Data 342 a (e.g., vendor-provided        vulnerability data), Crowd Sourced Data 342 b, and/or other data        sources.    -   Package Repository Feed: Package Repository Feed 324 may be        configured or designed to include functionality for retrieving        software package data (e.g., package change logs) from Package        Repositories 343 (e.g., any of publically available software        package repositories), processing this data (e.g., to extract        the list of fixed CVEs for a package), and storing this data in        the DG Database Repository 334.    -   Email Feed: Email Feed 325 may be configured or designed to        include functionality for retrieving email messages from the        Email Server 344, processing these messages (e.g., to construct        signal data), and for feeding signals to the Subscriber Gateways        310.    -   Configuration Processing: Configuration Processing 326 may be        configured or designed to include functionality for polling        events from the Queuing Service 341, retrieving the        configuration object associated to the event from the Object        Repository 340, processing the object to construct one or more        records or documents, and storing these records or documents in        the DG Database Repository 334. In some embodiments, the        Configuration Processing 326 may additionally trigger the        Analysis Algorithms 331 to process the newly arrived        configuration data in addition to the data already in the DG        Database Repository 334    -   Signal Processing: Signal Processing 327 may be configured or        designed to include functionality for polling events from the        Queuing Service 341, retrieving the signal object associated to        the event from the Object Repository 340, processing the object        to construct one or more records or documents, and storing these        records or documents in the DG Database Repository 334. In some        embodiments, the Signal Processing 327 may additionally trigger        the Analysis Algorithms 331 to process the newly arrived signal        data in addition to the data already in the DG Database        Repository 334    -   Vulnerability Processing: Vulnerability Processing 328 may be        configured or designed to include functionality for processing        new or changed vulnerability data (e.g., stored in the DG        Database Repository 334 by Vulnerability Feed 323 or Package        Repository Feed 324), and for updating the association of        vulnerabilities to packages or vulnerabilities to configurations        which is stored in the DG Database Repository 334. In some        embodiments, the Vulnerability Processing 328 may additionally        trigger the Analysis Algorithms 331 to process the newly arrived        vulnerability data in addition to the data already in the DG        Database Repository 334    -   Authentication: Authentication 329 may be configured or designed        to include functionality for authenticating (e.g., using        per-account basic authentication) requests sent by the        Subscriber Gateways 310 to the Back-end Service 320.    -   API: API 330 provides programmatic access to DataGrid services        (e.g., to service a request for information about servers,        configurations, signals or vulnerabilities pertaining to a        customer account which has been received from the Subscriber        Gateways 310).    -   Analysis Algorithms: Any of various analysis algorithms (see        Analysis Algorithms 331) may be configured or designed to        include functionality for analyzing data read from the DG        Database Repository 334 (e.g., data related to configurations,        signals, packages, vulnerabilities, servers, etc.) in order to        assess the performance, reliability, security, operation,        functionality, capability, maintainability, stability, or        utility of systems or their operating systems or applications or        services.    -   Logging: Logging 332 provides message and event logging services        to Back-end Services 320.    -   Transport Encryption: Transport Encryption 333 may be configured        or designed to include functionality for encryption of data        being passed over a network (e.g., flowing between Back-end        Services 320 and the Subscriber Gateways 310, Object Repository        340, Queuing Service 341, Vulnerability Database 342, Package        Repositories 343, Email Server 344, Subscriber Servers 300,        Configuration Management Tools 301, Monitoring Tools 302, Log        Aggregators 303, or CI & CD Systems 304).    -   Database Repository: DG Database Repository 334 (e.g., mongodb,        couchdb, and/or MySQL) may be configured or designed to include        functionality for storing organized collections of data for        Back-end Services 320. In some embodiments, the DG Database        Repository 334 may be provided as a service (e.g., the Amazon        DynamoDB service).    -   DGRI Scoring: DGRI Scoring 335 may be configured or designed to        include functionality for assigning DGRI Scores to entities        (e.g., a package, or a configuration, or any data known to or        constructed by the DataGrid System which represents or        contributes to the representation of systems or their operating        systems or applications or services) or collections of entities.        In some embodiments, the DGRI Scoring 335 component may assign        and provide scores and evaluations other than the DGRI Scores,        for example, popularity rank, change success probability,        vulnerability score, reliability score, compatibility score,        etc.    -   Object Repository: Object Repository 340 (e.g., Amazon S3) may        be configured or designed to include functionality for storing        objects (e.g., configuration and signal data fed to        Configuration Feed 321 or Signal Feed 322) for Back-end Services        320. In some embodiments, the Object Repository 340 may be        provided by a data store that is part of the Back-end Services        320 (e.g., the DG Database Repository 334).    -   Queuing Service: Queuing Service 341 (e.g., Amazon SQS) provides        queueing services to the Back-end Services 320 (e.g., Queuing        Service 341 may be configured to subscribe to new objects stored        in Object Repository 340, so that an event is automatically        posted to a queue whenever an object is stored). In some        embodiments, the Queuing Service 341 may be provided by the        Back-end Services 320, using software such as RabbitMQ, Reddis,        etc.    -   Vulnerability Database: Vulnerability Database 342 provides        publicly accessible vulnerability data (e.g., CVE identifiers        and metrics) to the Vulnerability Feed 323. In some embodiments,        the Vulnerability Feed 323 may access directly the Vulnerability        Database 342, the 3^(rd) Party Published Vulnerability Data 342        a, the Crowd Source Data 342 b and/or other publicly or        privately accessible vulnerability data feeds.    -   Package Repositories: Any of publicly accessible package        repositories (see Package Repositories 343) provide publicly        accessible software package data (e.g., package change logs) to        the Package Repository Feed 324. In some embodiments, the        Package Repositories may include some privately accessible        package repositories (e.g., ones requiring subscriptions for        access).    -   Email Server: Email Server 344 may be configured or designed to        include functionality for receiving and storing emails (e.g.,        indicating a change in the availability state of a service) sent        from Monitoring Tools 302. In some embodiments, the Email Server        344 may further receive e-mails from other sources, including        the Log Aggregators 303, CI & CD Systems 304 or other systems        with purview over the operation of the Subscriber Servers 300,        as well as from systems related to the Vulnerability Databases        342, 342 a, 342 b, and Package Repositories 343.    -   Continuous Integration (CI) and Continuous Delivery (CD) Systems        304: In the field of software engineering, continuous        integration (CI) is the practice of merging all developer        working copies to a shared mainline on a frequent basis (e.g.,        several times a day) and performing automated testing.        Continuous delivery (CD) is a software engineering approach in        which teams produce software in short cycles, ensuring that the        software can be reliably released at any time, as well as        performing automated releases. It aims at building, testing, and        releasing software faster and more frequently. The approach        helps reduce the cost, time, and risk of delivering changes by        allowing for more incremental updates to applications in        production. In some embodiments, the CI & CD Systems 304 use the        APIs 330 (directly, or indirectly, through webhooks) to        determine if new test or release is needed and/or to obtain        configuration recommendations, evaluations and/or DGRI scores.        In some embodiments, the CI & CD systems 304 provide        configuration and/or signal feeds to the Subscriber Gateways 310        and/or directly to the Back-end Services 320

FIG. 4 shows an alternate example embodiment of a DataGrid System 401which may be configured or designed to implement various aspects ofDataGrid technology described herein. As illustrated in the exampleembodiment of FIG. 4, components/systems illustrated in the DataGridSystem of FIG. 4 may include, but are not limited to, one or more of thefollowing system(s), component(s), etc. (or combinations thereof):

-   -   DataGrid Analytics Service 420. According to different        embodiments, the DataGrid Analytics Service may be configured or        designed to include functionality and/or component(s) for        implementing various DataGrid techniques such as, for example,        one or more of those performed by the Back-end Services System        320 of FIG. 3. For example, as illustrated in the example        embodiment of FIG. 4, the DataGrid Analytics Service may be        configured or designed to implement various DataGrid techniques,        including those provided by components 422-429, which, for        example, may include, but are not limited to, one or more of the        following (or combinations thereof):        -   API Service 425, which, for example, may be configured or            designed to:            -   Provide interface(s) for exchanging data between the                subscriber environments 410 (e.g., Tracked Servers 414,                directly or indirectly, Anonymizing Gateway 419, CLI                416, DevOps systems 418, Config Automation 412, Plugin                411 and/or Subscriber).            -   Example Input Data: request from the subscriber                environment; telemetry data and even reports.            -   Example Output Data: query responses (see, e.g., CLI                examples).            -   Example Triggering Events: Continuously and/or                periodically in use between subscriber environments and                the DataGrid back-end.            -   Who it talks to:                -   On the subscriber side: Tracked Servers, Config                    Automation, Plugin, Anonymizing Gateway, CLI,                    subscriber DevOps or other systems that invoke the                    API directly (or through an SDK/library).                -   On the back-end side: all other systems that provide                    information that is submitted from or returned to                    the subscriber environment, primarily the DB                    database, Processor, Query engine, Config/Vuln                    Analyzer.            -   Example use cases:                -   Submit telemetry data from subscriber environment to                    the back-end service for storing and analysis.                -   Execute a query (see, e.g., CLI examples).                -   Perform custom query or operations instructed by the                    DevOps systems.        -   Processor 424 may be configured or designed to:            -   Receive telemetry data about subscriber server                configuration(s) and event(s), record this information                in the DB database and trigger analysis and updates if                needed.            -   Example Input Data: telemetry data, primarily                configurations and events from the Tracked Servers            -   Example Output Data: stored data in the DB database and                triggered re-evaluation/analysis or notification to                subscribers via the API.            -   Example Triggering conditions: Continuously and/or                periodically in use; primarily used for telemetry                collection, not dissemination of results.            -   Who it talks to: Tracked Servers (indirectly via API),                DG Database, Analytics Engines, etc.            -   Example use cases:                -   Record new system configuration from Server XYZ,                    trigger analysis if signification/interesting                    changes found                -   Record reported telemetry event(s) (signals) for                    Server XYZ (directly or through a monitoring system)                    indicating that the application on the server is                    working well (or not); may trigger score improvement                    or degradation.        -   Query Engine 428 (e.g., back-end service) may be configured            or designed to:            -   Execute queries received, perform data filtering and                aggregation, as well as pagination and notifications of                changes            -   Example Input Data: subscriber queries (see, e.g., API,                CLI)            -   Example Output Data: query results (see, e.g., API, CLI)            -   Example Triggering conditions: always used, primarily to                return data, either about individual systems or                aggregate (e.g., score)            -   Who it talks to: subscriber systems (Config                Automation/Plugin, CLI, subscriber DevOps and other                subscriber operations monitoring and automation                systems), DG Database, Configu/Vuln Analyzer            -   Example use cases: (see, e.g., CLI query use cases)        -   DG Database 426 may be configured or designed to:            -   Stores telemetry data, analysis results, subscriber                information            -   Example Input Data: telemetry data, configurations,                signals, package data, vulnerability data, analysis                data, subscriber subscription info, subscriber account                information            -   Example Output Data: same as the Example Input Data            -   Example Triggering Events: Continuously and/or                periodically in use, storage for the telemetry data and                analysis data (both intermediate and finalized results)            -   Who it talks to: it is a passive element, may submit                notifications to other systems such as the analytics                engines, query engine when data changes or new data is                available            -   Example use case:                -   Store received telemetry information about Tracked                    Servers                -   Retrieve intermediate analytics data/state to                    facilitate further computations/machine learning                -   Retrieve configuration information about a queried                    server        -   Config/Vulnerability Analyzer 422 may be configured or            designed to:            -   Extract vulnerability and configuration quality                (reliability) information from external sources (as                opposed to telemetry collected from the subscriber                systems 410; machine parse data (e.g., API,                screen-scraping, etc.); compile data from multiple                sources to achieve more complete/reliable information            -   Analyze configurations collected from the Tracked                Servers and provide information/score based on the                information compiled from external sources            -   Example Input data: external sources, telemetry                data/configurations            -   Example Output data: list of vulnerabilities, affected                and available packages, vulnerability, reliability and                other scores            -   Example Triggering events: used to evaluate systems                against data from external sources to complement data                from internal modeling and analytics engines            -   Who it talks to: external sources, DG Database; may                trigger additional analytics engines and/or                notifications to the subscriber via the API            -   Example use cases:                -   Parse Red Hat-provided vulnerability database to                    identify packages and specific versions/releases                    that are vulnerable vs. those that have patches for                    these vulnerabilities                -   Parse glibc test coverage and results status page to                    determine whether installed versions may expect                    failures to known bugs/regression problems                -   Compare installed packages/versions and                    configurations against the compiled data from                    external source and report which issues affect a                    particular system (or group of systems)                -   Recommend which versions/configuration can be used                    to improve performance and security, based on data                    from external sources        -   Analytics Engines 429 may be configured or designed to:            -   Analyze data collected from different subscribers'                Tracked Servers, both configuration and event/monitoring                data, to determine configurations that are more                frequently used (or indicate they are rare/unusual),                create models for reliability prediction and                configuration recommendations, based on the totality of                the telemetry received, specifically using information                collected from one subscriber (or many subscribers) to                provide predictions/value for a different subscriber. In                some embodiments, the Analytics Engines use machine                learning techniques to create models based on the                telemetry data (configurations, signals and/or known                outcomes) and evaluate configurations using these                models, provide recommendations in configuration changes                and perform operations affecting the Tracked Servers                414. In some embodiments, the Analytics Engines use                artificial intelligence techniques to provide                recommendations and perform operations affecting the                Tracked Servers 414.            -   Example Input data: telemetry data,                vulnerability/configuration data from external sources,                events, queries, decisions made by subscriber to accept                or reject prior recommendations, outcome information                following subscriber's accepting prior recommendations            -   Example Output data: score, reliability and                compatibility predictions (e.g., probability for                success/failure), mean time between failures (MTBF)                prediction, popularity, rank and trending info,                recommendations for configurations and packages/version                to use for improved operations            -   Example Triggering events: request for recommendation,                telemetry data received, received adverse information                (e.g., package version being superseded or rolled back,                downtime/crash reports, etc.)            -   Who it talks to: primarily DG Database to retrieve                telemetry data (e.g., configs and events), may use data                from the config/vulnerability analyzer (e.g., external                sourced data), may receive signals directly from the                Processor; may send notifications/trigger further                analysis or trigger notifications to subscriber about                newly discovered or changed characteristics            -   Example use cases:                -   Model reliability of different software packages and                    configurations based on specific versions in use;                    based on positive (e.g., uptime) and negative                    signals (e.g., crashes, rollbacks, etc.), across                    large population of configurations, identify                    specific software packages, versions and                    configuration/operations parameters that likely                    cause reliability problems and lower their score                -   Model compatibility of packages, either on the same                    system or across subscriber-server (or multi-point)                    connections, based on configurations found and                    positive/negative signals from differing                    configurations, identify particular combinations of                    packages/versions and configuration/operations                    parameters that work well together (or don't work                    together), make recommendations for best                    combinations        -   Tracked servers 414 (e.g., subscriber-provided). In at least            some embodiments, these are subscriber systems, which can be            any computing system, including physical server, virtual            machine, Docker or similar container, as well as hardware            appliance (SAN/NAS, router, switch, load balancer, etc.) or            mobile device, laptop, desktop, or even any            computer-controlled device such as CNC lathe, environment            conditioning, robots, etc. According to different            embodiments, the servers may directly (e.g., via installed            DataGrid Subscriber component(s)) or indirectly (e.g.,            through the Config Automation system or similar) send            telemetry data/event(s) to DataGrid service, including OS            info, installed software packages and their versions,            configuration parameters, network connections and services            provided and used, CPU/memory/network metrics, etc. In some            embodiments, DataGrid Subscriber components may be installed            on the Tracked Servers 414 and send configuration and/or            signal telemetry data to the Anonymizing Gateway 419 or            directly to the API 425.        -   Config automation tools/systems 412 (e.g.,            subscriber-provided, optional). In at least one embodiment,            this is a system and/or toolkit for automatic configuration            management, such as Chef, Puppet, Ansible, Salt Stack,            Microsoft System Center, etc. Its role is to execute            subscriber-initiated or automated procedures in order to            maintain the Tracked Server's configurations within            subscriber-specified setups (or changes). It talks to the            Tracked Servers to (a) collect information (e.g.,            configuration and signal telemetry) and (b) execute            commands/changes on them. For example, according to            different embodiments, the config automation tool(s) may be            used to facilitate, enable, initiate, and/or perform one or            more of the following operation(s), action(s), and/or            feature(s) (or combinations thereof):            -   Install package(s)            -   Effect a configuration change(s) (e.g., change permitted                cypher codes for SSL or configure number of threads for                a web server).            -   Collect configuration information and send it to                DataGrid service.            -   Provide signals about events occurring on the Tracked                Servers, such as reboot, change of configuration,                failure and/or software startup completion.            -   Provide a conditional software/configuration update                which will be executed (or rejected) based on                information provided from DataGrid service (e.g.,                upgrade package if the new package provides significant                improvement of DGRI score, is widely deployed and it has                not been found to cause problems in other deployments).        -   DataGrid plugin 411 (alongside with plugins from other            vendors) may be configured or designed to provide            DataGrid-related functionality, for example periodic scans,            mass upgrades, update approval/filtering, etc.        -   The DataGrid Analytics Service 420 may provide commands            (input) to these systems and may consume            responses/notifications from them about actions            taken/problems found        -   Some subscribers will not use Config Automation systems            instead opting for alternate mechanisms via Subscriber            DevOps automation 418 or directly installing DataGrid            Subscriber components on the Tracked Servers.    -   Subscriber DevOps 418 and other management systems (e.g.,        subscriber-provided, optional)        -   These are other subscriber-provided systems that control            subscriber's IT operations; they may cooperate with the            Config Automation system 412 or, as it happens in many            cases, entirely supplant it        -   It may include dashboards, policy verifiers, CI/CD systems            (continuous integration/continuous delivery), etc.,            management and IT operations tools, whether or not            integrated with the software development process at the            subscriber site, monitoring systems such as Nagios, New            Relic, etc.        -   The Subscriber DevOps systems 418 may query the DataGrid API            425 (directly or via anonymization gateway 419) in order to            make deployment and operations decisions (similar to what            Config Automation 412 does), including whether to upgrade            packages/change configuration, or even deploy new versions            of the software and systems    -   CVE 430 (Common Vulnerabilities and Exploits) info database        (e.g., third party)        -   Existing database of known/reported vulnerabilities        -   The DataGrid Analytics Service may use these to provide            supplementary information about packages and configurations            (not gathered directly through DataGrid telemetry collection            of the Tracked Servers)        -   Example Input: usually provided by vendors and security            researchers; the DataGrid Analytics Service have provided            input as well (esp. regarding inconsistencies in the            database necessitating corrections)        -   Example Output: list of vulnerabilities, what            software/configurations are affected, and what software            versions are affected    -   Vendor Info 440 (or Community Info) (e.g., third party)        -   Existing database of known/reported vulnerabilities provided            by vendors and/or community for OS or other software package            and configuration artifact        -   In addition to vulnerabilities, those may include quality            information about configurations and package versions, such            as:            -   Known bugs;            -   Test code coverage;            -   Test pass/failure details;            -   Discussion forums where issues are discussed;            -   Etc.        -   The DataGrid Analytics Service 420 may use these to provide            supplementary information about packages and configurations            (not gathered directly through DataGrid telemetry collection            of the Tracked Servers)    -   Plugin 411 may be configured or designed as DataGrid software        which runs in subscriber environments. In at least some        embodiments, configuration of a Plugin may be modified by the        subscriber).        -   According to different embodiments, functions/features may            include, but are not limited to, one or more of the            following (or combinations thereof):            -   Facilitating telemetry collection from Tracked Servers.            -   Intercepting configuration change requests to provide                filtering, reject/accept the change (e.g., to upgrade or                not), determine the specifics (e.g., particular package                version or configuration parameter to set), etc., based                on data obtained from the back-end service/analytics                and/or policies defined by subscriber (e.g., based on                different in the DGRI score between current package and                new package, the difference to be greater than a policy                defined by the subscriber)            -   Providing lifecycle events and identification/attributes                information, such as, for example, one or more of the                following (or combinations thereof):                -   New server deployed.                -   Server “destroyed” or shut down.                -   Configuration change notification.                -   Server identity/role information (e.g., hostname or                    role in an app).                -   Server attributes, such as server/subscriber, dev                    vs. test vs. production environment, location, etc.                -   Server up/down events, including infrastructure                    (e.g., power) and end-to-end service up/down events                    (e.g., service availability and performance for                    end-users), performance measurement events, etc.        -   Example Input: commands (e.g., such as upgrade), time-based            events (check Tracked Servers every 4 hours), monitoring            events, identity and attributes, notifications from DataGrid            back-end service about score changes        -   Example Output: execute operations on the Tracked Servers            usually via the Config Automation system; provide telemetry            data, including monitoring and outcome information, to            DataGrid service        -   Example Triggering Events: Plugins are used primarily when            the subscriber already uses Config Automation systems and            wants to avoid installing clients on each system.            Alternatively, Plugins and Config Automation may be not            present/used and a DataGrid Subscriber used to provide the            Plugin's function on each server separately, possibly under            the control of subscriber's DevOps system        -   Who it talks to: one or more of: Config Automation system,            Tracked Servers, DataGrid Back-end service, Anonymizing            gateway, DevOps systems        -   Example use cases:            -   Periodically check tracked servers for configuration                changes and if found, send telemetry data.            -   Intercept configuration change requests (e.g., such as                upgrade Apache to the latest version) and modify the                request, resulting in either allowing it as is,                modifying the version to be upgraded, or simply                rejecting the request (e.g., due to known problems with                the target version or configuration)    -   DataGrid Client may be used as an alternative to Plugin 411, and        may provide functionality similar to that of Plugin 411.        -   Respective DataGrid Client may be installed on each Tracked            Server 414 (or once per group of related Tracked Servers,            such as on the host for a set of container systems).        -   May be configured or designed to have similar functions and            other characteristics as Plugin 411. In at least one            embodiment, a respective DataGrid client may be deployed or            implemented on each Tracked Server separately, and may be            orchestrated by subscribers' DevOps system or may be            configured or designed to work independently, such as            periodically deciding whether to upgrade packages/make            config changes.    -   CLI 416 (optional) may be configured or designed as DataGrid        software which runs in subscriber environments, including, for        example, IT operator laptops, etc.        -   Functions/features: provide easy way for human            administrators and scripted coded systems to execute queries            and other operations on the DataGrid API 425.        -   Provides an easy-to-use syntax for humans and scripts (e.g.            as compared to programmatic API invocations).        -   Provides easy to see, human-oriented output (e.g. as opposed            to JSON or XML coded responses); also provides            machine-readable responses (e.g. such as JSON or XML) for            use in scripts.        -   Alternative to direct use of the API 425.        -   Example Input Data: request, query (e.g., list systems, get            vuln info, get score), filters (show all systems that have            vulnerabilities with severity 7 or above, or DGRI score less            than 700, or recent reduction; systems that are part of a            particular application or geographic region, etc.)        -   Example Output Data: list of matching entities (e.g., such            as systems, packages, vulnerabilities, etc.), score,            configuration values, entity info, etc.        -   Example Triggering Events: used instead of direct            programmatic calls to the API, for convenience of human            users (e.g., IT administrators, DevOps), esp. for ad-hoc            queries and diagnostics; as well as for simpler scripting            (e.g., bash scripts) where may be more convenient to invoke            a utility with command line parameters than make an API call        -   Who it talks to: the DataGrid back-end API, either directly            or indirectly (via the Anonymizing Gateway)        -   Example use cases:            -   (query) List all systems (Tracked Servers) that have not                reported telemetry data for more than 24 hours.            -   (query) Obtain detailed information about a particular                system, incl. IP address, hostname, configuration                details, etc.            -   (query) Find what systems are affected by a particular                problem or problem with certain characteristic (e.g.,                vulnerable to certain type of attack, has reliability                issues, etc.).            -   Delete system, rename system, add attributes to system,                etc.    -   Anonymizing Gateway 419 may be configured or designed as        DataGrid software which runs in subscriber environments, or as a        service provided by DataGrid System. In at least some        embodiments, configuration of the Anonymizing Gateway may be        modified by customers. According to different embodiments, the        Anonymizing Gateway may be configured or designed to:        -   Strip, tokenize, and/or encrypt sensitive information from            the subscriber environment, such as host names, IP            addresses, company names, URL, etc., from telemetry            information and queries; preferably in a way that can be            reversed when data is returned back (e.g., encrypt hostnames            from Tracked Servers, and decrypt them when returned on a            queried list of servers affected by a given vulnerability).        -   Restore/rebuild sensitive information when extracting data            from DataGrid backend and returning it to the subscriber, so            that the information will be more useful/meaningful. The            data may be encrypted/decrypted; or tokenized and stored            locally in subscriber environment and only tokens sent to            DataGrid, restoring them by resolving the returned tokens to            the original information via the local store.        -   Facilitate queries which filter by some of the anonymized            fields where the backend 420 may not have sufficient data to            evaluate the requested filter        -   Example Input Data: outgoing requests, such as telemetry            data and API requests going from subscriber environment to            the back-end; the same data sent out to the back-end after            anonymization (see functions above)        -   Example Output Data: API responses, notifications; takes            data returned from the back-end, and restores the sensitive            data before returning it to the subscriber environment.        -   May facilitate certain queries for which the back-end does            not have the necessary information, for example, querying            list of systems by host name with wildcard (e.g.,            *.example.com), which may be partially processed in the            Anonymizing Gateway.        -   Example Triggering Events: the Anonymizing Gateway is used            when the subscriber wants to ensure that sensitive data is            not stored in the back-end database, so that it may not even            accidentally be disclosed (e.g., due to breach in DG            Database or other back-end systems, or through bugs in the            analytics engines).        -   Who it talks to: on the “protected side” (subscriber side),            to subscriber systems, including Tracked Servers, Config            Automation/Plugin, DevOps and other API clients, CLI; on the            “back-end side” (DataGrid service side), the back-end API            425        -   Example use cases:            -   Server telemetry data from server A contains sensitive                fields such as the hostname (db.example.com) and IP                address (e.g., 72.15.140.15), together with less                sensitive data, such as OS type and version. The gateway                will encrypt the hostname and IP address in a repeatable                way using keys residing on the gateway (e.g., subscriber                environment) before forwarding to the API, so that the                sensitive data cannot be retrieved by DataGrid.            -   User queries list of servers matching the wildcard                “*.example.com”. The gateway queries list of all servers                or consults local cache to find encrypted values for all                servers matching the query, then queries the API for                these servers; upon return, decrypts the sensitive data                (e.g., hostnames, IP addresses) before returning it to                the querying system (e.g., such as, for example, CLI,                DevOps/other ops systems, Config automation, etc.)

Example DGRID Terms and Definitions

The meanings or referents of some terms are presented below asconditioned by one or more contexts. These contextually conditionedmeanings or referents do not impair the most general applicable readingof these terms in other contexts or where specified.

Attribute: When used in the context of data which is sent by a serverwhich has the DataGrid Subscriber component(s) installed to the DataGridSystem in a configuration, the term attribute means any of: anyoperating system identifier including name, version, CPE (CommonPlatform Enumeration) name, bug report URL, or vendor product URL; anyidentifier for an installed package including name, version, release,architecture, vendor, dependencies (requires), provides, or obsoletes,or identifiers for CVEs which have been fixed in the package; BIOSversion; chipset identifiers; virtualization driver identifiers; CPUarchitecture identifiers; IP address; hostname; FQDN; machine ID; or anysetting or data read from any package, application, program, service oroperating system configuration file.

Characteristic: When used in the context of data which is sent by aserver which has the DataGrid Subscriber component(s) installed to theDataGrid System in a configuration, the term characteristic means: anyattribute or characteristic (in the most general applicable sense) ofthe server or its operating system or applications or services thatdetermines or affects the performance, reliability, security, operation,functionality, capability, maintainability, stability, or utility of theserver or its operating system or applications or services.

Configuration: There are two uses of the term configuration which may bedistinguished by the context of their use. When a server with theDataGrid Subscriber component(s) installed sends data to the DataGridSystem, one kind of data that it sends is termed a configuration. Here,in the first use, the term configuration means one or more attributes orcharacteristics. See FIG. 65 for an example of a configuration sent tothe DataGrid Application in at least one embodiment. In at least oneembodiment, when the DataGrid System receives such a configuration itstores it in the database. In at least one embodiment in this process,the received data is separated into two sets and stored as two differentrecords or documents. The first is termed the system record or document,and the second is termed the configuration record or document. When usedin the context of configuration data read from the database, e.g., forthe purpose of analysis, the term configuration, in this second use,refers to data stored with the configuration record or document.

Configuration element: A configuration element is an attribute orcharacteristic of the server, for example, those that can be identified,recorded and/or tracked. Some examples of configuration elementsinclude:

-   -   Operating system name and version.    -   Software packages (e.g., specifying for a given package: package        name, vendor, version, architecture, and release, as well as a        list of CVEs (Common Vulnerabilities and Exposures) which have        been fixed for the package, extracted on the subscriber from        package changelogs).    -   Package repositories configured that may provide updated        versions of packages or new packages to be installed; such as        the operating system “yum” and “apt” repositories, the Microsoft        Update service, the Comprehensive Perl Archive Network (CPAN),        the Sonatype Central Repository, GitHub repository, etc.    -   System, component, and/or application configuration files and        related configuration parameters (e.g., the value of the        MaxRequestWorkers in the Apache httpd.conf configuration file).    -   Installed hotfixes, updates, service packs, patches, etc.    -   BIOS or firmware versions.    -   Hostname, IP address, unique system ID, Amazon instance ID,        Amazon Image ID, Openstack instance ID.    -   Chipset model and version.    -   Device or virtualization driver name and version.    -   Etc.

Configuration record: The configuration record or document includesattributes or characteristics which may be common to many differentservers and do not depend on any particular server. More specifically,the configuration record or document records together those attributesor characteristics any difference in which would result in a differentconfiguration record when considered for the purposes of analyzing theperformance, reliability, security, vulnerability, operation,functionality, capability, compatibility, maintainability, stability, orutility of those systems (or their operating systems or applications orservices) which share the same configuration record. For this reason theconfiguration record or document excludes attributes and characteristicssuch as the server ID, hostname, FQDN (fully qualified domain name), IPaddress, etc., which may depend on a particular server and which do notmeaningfully contribute to such an analysis. Examples of different typesof information which may be included in one or more configurationrecords may include, but are not limited to, one or more of thefollowing (or combinations thereof):

-   -   Configuration element(s).    -   Attribute(s).    -   Characteristic(s).    -   Operating system information, such as, for example, name and/or        version.    -   Package information, such as, for example, package name, vendor,        version, architecture, and release, as well as a list of CVEs        (Common Vulnerabilities and Exposures) which have been fixed for        the package, extracted on the subscriber from package        changelogs.    -   Information obtained from one or more package repositories which        may provide information about updated versions of packages        and/or about new packages to be installed, such as, for example,        the operating system “yum” and “apt” repositories, the Microsoft        Update service, the Comprehensive Perl Archive Network (CPAN),        the Sonatype Central Repository, GitHub repository, etc.    -   Information relating to system, component, and/or application        configuration file(s) and related configuration parameters        (e.g., the value of the MaxRequestWorkers in the Apache        httpd.conf configuration file)    -   Information relating to installed hotfixes, updates, service        packs, patches, etc.    -   Etc.

The configuration record may also include data which is not obtainedfrom configurations sent to the DataGrid System by subscriber serversbut which is obtained or determined from other sources. In at least oneembodiment this data may include, but are not limited to, one or more ofthe following (or combinations thereof):

-   -   Information about vulnerabilities affecting packages in this        configuration record.    -   The DataGrid Reliability Index (DGRI) Score for the        configuration.    -   Scoring information relating to relating to one or more metrics        of the configuration and/or elements thereof. Examples of        Scoring information may include, but are not limited to, one or        more of the following (or combinations thereof): Vulnerability        Score; Compatibility Score; Reliability Score; Configuration        popularity score; Package popularity score; Trend score;        Combined score; User-weighted score; etc.    -   Information about the number of systems which use this        configuration currently.    -   Information about the number of systems which have used this        configuration historically.    -   A unique configuration ID used as a primary key. In some        embodiments, the configuration ID may be a hash of the sorted        combined package names, versions, releases, architectures and        vendors found in the configuration. This ID also serves as the        primary key for a separate signal survey record or document        which records signal data associated to this configuration        record including the number of signals by signal type sent by        some or all servers using this configuration. In some        embodiments, the configuration ID may be a combination of the        operating system name and version and a portion of the hash.    -   Etc.

System Record: The system record or document includes attributes orcharacteristics which are associated by the DataGrid System to aparticular server. These attributes and characteristics may include, forexample: hostname, fully-qualified domain name (FQDN), system ID, BIOSversion, chipset identifiers, virtualization driver identifiers, etc.Many different system records may be associated to a singleconfiguration record. In some embodiments, the system record may alsoinclude data which is not obtained from configurations sent to theDataGrid System by subscriber servers but which is obtained ordetermined from other sources. In at least one embodiment this dataincludes: number of ping signals sent by this server, currentconfiguration ID, a configuration history list including for at leastone historical configuration the configuration ID and the start time andthe end time of the use of that configuration, timestamp of the lastping signal from this server, the number of ping signals receivedhistorically from this server, and the timestamp of the creation of thesystem record.

Server: By server is meant a physical or virtual computer server, avirtual machine, a container (e.g., Linux container, Solaris Zonecontainer, Docker container) and/or any other computing executionenvironment

System: By system is typically meant a server, including a physical orvirtual computer server, a virtual machine, a container (e.g., Linuxcontainer, Solaris Zone container, Docker container) and/or any othercomputing execution environment. The term system is also used in itsmost general applicable sense when referring to the DataGrid System as asystem. See also system record.

Signal: When a server with the DataGrid Subscriber component(s)installed sends data to the DataGrid System, one kind of data that itsends is termed a signal. In this context signal means any datarepresenting any event related to, or any change of state of, the serveror its operating system or applications or services, which may be usedto assess or contribute to the assessment of the performance,reliability, security, operation, functionality, capability,maintainability, stability, or utility of the server or its operatingsystem or applications or services. By way of illustration, as usedherein, a signal may include, but is not limited to, one or more of thefollowing types of specific signals practiced in at least oneembodiment:

-   -   Ping: A ping signal indicates the server is alive and        functioning. For example, when a configuration is fed to the        application API, it is also considered a ping signal.    -   Reboot: A reboot signal indicates the server has rebooted.    -   Crash: A crash signal indicates the server has experienced a        kernel failure such as a segmentation fault or        out-of-memory-killer.    -   Offline: An offline signal indicates a service provided by the        server is reported offline.    -   Online: An online signal indicates a service provided by the        server is reported online.    -   Log error: A log error signal indicates an Error or higher        severity log message.    -   Log event: any log event produced from software running on the        server    -   Rollback: A rollback signal indicates the server has reverted to        a previous configuration.    -   User fail: A user fail signal is a user-created failure signal.    -   User success: A user success signal is a user-created success        signal.

These signals include qualifying information such as the type of crash,or what service has gone offline, or what application generated a logerror, its severity and the error message. See FIG. 66 for an example ofa signal sent to the DataGrid Application in at least one embodiment.

To be understood in this context signals do not have to come from aserver with the DataGrid Subscriber component(s) installed. Rather,according to different embodiments, they may come from any usefulsource, such as, for example:

-   -   The DataGrid Subscriber component(s) installed on a server.    -   Monitoring tools such as Nagios, Ganglia or Zabbix. These tools        already use configured service monitoring checks in        best-practice operations. These tools may send service online or        offline signals to the DataGrid Application signal email        monitoring service (most service monitoring systems are capable        of sending email notification when the state of a service        changes). These signals may also be fed directly to the        application API (many monitoring tools or front-ends may do        this, e.g., Centreon on top of Nagios). The DataGrid System        associates these events not just to the immediate state of the        server or service (which is the original purpose of these        monitoring tools) but to the configuration associated to that        server at that time. In this way signals from many different        servers which use the same configuration are aggregated over        time.    -   Configuration management tools such as Chef, Puppet and Ansible.        These tools may be used to send signals for managed servers or        groups of servers to the application API using the DataGrid        software installed with such a system.    -   IT configuration, management and orchestration systems, such as        VMware vSphere, Microsoft System Center, Docker Datacenter, etc.    -   Log aggregators such as Splunk or Logstash. These tools may be        used send signals extracted from the logs of servers which use        these services and which have the DataGrid Subscriber        component(s) installed.    -   The DataGrid application. The DataGrid Application may generate        internal signal events for a server, for example in the case        where a server reports a new configuration which is a rollback        to a previous configuration.

DGRI Score: In at least one embodiment, a DGRI Score is a value or setof values or tuples of values assigned by any of different analysisalgorithms to any entity or collection of entities and which representsany assessment of that entity or collection of entities which indicatesor may contribute to an indication of the performance, reliability,security, operation, functionality, capability, compatibility,maintainability, stability, or utility of systems or their operatingsystems or applications or services. Here the term entity means any dataknown to or constructed by the DataGrid System which represents orcontributes to the representation of systems or their operating systemsor applications or services. Here the term entity also means byinclusive or any of these: a system, a server, a configuration element,an operating system, an application, a service, a configuration, apackage, a security vulnerability, a signal, a DGRI Score.

Different analysis algorithms may assign separate DGRI Scores to thesame entity or collection of entities. For example, a configuration maybe assigned separate DGRI Scores representing performance, security orreliability. For example, a collection of two configurations may beassigned separate DGRI Scores representing the probability ofsuccessfully changing from the first configuration to the second, andfrom the second configuration to the first, where these changes involvethe upgrade, downgrade, installation or removal of software packages. Insome embodiments, a DGRI score can also represent the probability ofsuccess (or another metric characteristic of) a change from oneconfiguration to another.

An analysis algorithm may analyze some or all or part of the datarepresenting any entity, whether or not that entity is to be assigned aDGRI Score. For example, when assigning a DGRI Score to a configuration,an algorithm may consider only a subset of that configuration'spackages, or may consider some vulnerabilities and ignore others, or mayconsider some signals and ignore others.

In at least one embodiment a DGRI Score is assigned to at least oneconfiguration as a single number which represents the confidence orreliability of that configuration. A DGRI Score may also be assigned toat least one package (unique in respect of its name, version, release,architecture and vendor), also representing its confidence orreliability, and these DGRI Scores may be used in an analysis whichassigns a DGRI Score to a configuration.

In at least one embodiment, the DGRI Score may be used to makerecommendations to select a configuration element or a change of aconfiguration element. In at least one embodiment, the DGRI Score may beused to make an automated decision, optionally based on acustomer-specific policy, to trigger a change of a configuration elementin one or more systems.

DataGrid Application Embodiments

Example Input and Output of the DataGrid Application—

By way of illustration, the DataGrid Application may be examined interms of its inputs and outputs. Input to the DataGrid Application mayinclude, but are not limited to, one or more of the following (orcombinations thereof):

-   -   Configurations: The DataGrid Application exposes a REST API        which may be used to feed configurations for servers belonging        to different customer accounts to the application. For example,        servers with the DataGrid Subscriber component(s) installed        periodically feed their current configuration to the DataGrid        application. In an alternate embodiment, the DataGrid Subscriber        component(s) checks whether the server configuration has changed        (e.g., by comparing the last sent configuration hash or        timestamp to the current configuration hash or to the timestamp        of the server package database), and sends an update only when        it detects that a change has occurred (or might have occurred),        thus reducing the amount of data transmitted and the load on the        receiving application servers due to sending duplicate        configuration data.    -   Signals: The DataGrid Application API may be used to feed server        signals to the application. Signals are associated to the        configuration of that server at that time.    -   Other: Other input to the DataGrid Application includes        information which is not crowdsourced directly or indirectly        from servers, but is sourced by the application itself from        external services and resources. This input includes public        feeds of CVE (common vulnerabilities and exposures) data, and        publically accessible package repositories (used, for example,        to retrieve package changelogs, number of open issues, test        results, etc.).

Output from the DataGrid Application may include any data returned withan API request. For example, the application API may be used to getinformation about servers, configurations and vulnerabilities pertainingto a particular customer account, including the DGRI Scores forconfigurations and other entities.

Example Embodiment of DataGrid Application

An example embodiment of the DataGrid Application may be implementedusing an Amazon Virtual Private Cloud (VPC) which provisions a logicallyisolated section of the Amazon Web Services (AWS) Cloud. The DataGridApplication uses Amazon Elastic Load Balancing (ELB) to handle incomingtraffic to DataGrid API services. Some or all API requests are madeusing HTTPS, and SSL termination is done in ELB. The API services areaccessed using two different URLs, separating feed requests (postedconfiguration and signal data) from other query requests (e.g., getinformation about servers, configurations, or vulnerabilities). Feedrequests are handled by the feed server, and some or all other requestsare handled by the API server, at least one implemented using a separateAmazon EC2 instance. At least one of these instances uses Dockercontainers to deploy applications and their dependencies within softwarecontainers which provide resource isolation through operating systemlevel virtualization. In general, at least one Docker container is usedto deploy a service which contributes to the overall functioning of theDataGrid System.

API Server—

According to different embodiments, the API server may deploy one ormore of the following additional containers:

-   -   API: This container runs the API server apisrv.py, a python        script which handles query requests, previously authenticated,        for information about systems, configurations and        vulnerabilities pertaining to a particular DataGrid customer        account. The API server verifies the sanity of the account name        provided in the request header and extracts any query data        provided (e.g. a system, configuration ID or vulnerability ID).        The API server queries the database, retrieves the relevant        documents according to the request type, and constructs and        returns a JSON response. Supported requests include: health        check of the DataGrid API; list some or all systems associated        to an account; get information on a specific system by system        ID; get the DGRI Score and metrics for a system's current        configuration; get a system's current configuration; get        information for a specified configuration; get the DGRI Score        and metrics for a specified configuration; get information on a        specified vulnerability; get a list of some or all vulnerable        systems associated to an account. See FIGS. 67-73 for example        API server requests and responses.

The Feed Server: According to different embodiments, the feed serverdeploys the following additional containers:

-   -   feed: This container runs the feed server feedsrv.py, a python        script which handles configuration and signal feed requests,        previously authenticated, and received as POST data. The feed        server validates this data by: verifying the data is valid JSON;        verifying the type of data is ‘config’ or ‘signal’; verifying        the sanity of the account name; and verifying the data includes        a server or system ID. Once the data is validated, the feed        server: generates a current received-at-server timestamp and        stores the JSON data in an Amazon S3 bucket ‘feed’ under a key        ‘<account>/<timestamp>’. An Amazon SQS queue ‘feed’ is        configured to subscribe to new objects in the ‘feed’ bucket, so        an event is automatically posted to this queue when the JSON        document is stored.    -   proc: This container runs the processing server procsrv.py, a        python script which long polls SQS events for the ‘feed’ queue,        at least one with a pointer to the related configuration or        signal document in S3. The processing server retrieves the event        document from S3 and parses it into an internal representation        (e.g., JSON dictionary). It finalizes the system identity        (ordinarily using the provided system_id, but more complex        analysis may be done here), stores the definitive system_id in        the document root level, and dispatches the event to the        appropriate handler based on the type of data—signal or        configuration. Any message from the SQS queue which cannot be        processed for any reason is re-posted to the Amazon DLQ (Dead        Letter Queue) together with a brief explanation of why it was        sent to the DLQ and by whom. This operation is configured with        the feed SQS queue so that after 5 attempts the message is        automatically moved to the DLQ. Processing success and failure        are both logged.

According to different embodiments, both of the feed and API serversaccess services provided by the following containers (regardless ofwhere they are deployed) through the EC2 internal network. At least oneof the feed server and/or API server may deploy one or more of thefollowing containers:

-   -   nginx: This container runs nginx which acts as a reverse proxy        to retrieve resources on behalf of the subscriber request. Some        or all requests are first authenticated using the service        provided by the auth container, so that only authenticated        requests ever reach the feed or API services.    -   auth: This container runs uwsgi_python to provide basic        authentication of some or all API requests using a python        script. Account-based authentication information is provided in        some or all request headers.    -   log: This container runs rsyslogd to provide support for message        logging to services running in other containers.    -   db: This container runs a mongodb server, a document-oriented        database used in at least one embodiment.

Some or all processed configuration, signal and vulnerability data isstored in mongodb.

-   -   vuln: This container runs the vulnerability server vulnsrv.py        and also includes utilities useful for integrating vulnerability        data with the DataGrid service. The vulnerability server is        responsible for keeping the database vulnerability data up to        date, and for updating the association of vulnerabilities to        packages.    -   nlyz: This container runs the analysis server nlyzsrv.py; in        some embodiments, this component may run one or more different        analytics engines, in one or separate containers. The analysis        server is responsible for analysis tasks which are queued, or        performed in batch, or which may require a long time to execute.        In general these tasks have been de-synchronized from other        operations because of their latency. In at least one embodiment        the analysis server is responsible for updating the association        of vulnerabilities to configurations when changes to        vulnerability data associated to packages occurs, and for        recalculating the DGRI Score for configurations in the same        case. The analysis server processes packages in the database        which are marked as changed (indicating that the package        vulnerability list has changed since the last time        configurations which include this package have been updated by        the analysis server). For at least one such package, the        analysis server:    -   Updates at least one configuration in the database which        includes this package to modify the list of vulnerabilities        which affect that configuration (adding or removing as        required), and recalculates the DGRI Score for the        configuration.    -   Marks the package as not changed.    -   The analysis server may perform additional analysis of        configuration and signal data, using pattern recognition and        other mathematical analysis to determine confidence scores        associated with configurations and packages. For example, it may        identify that in many cases when a problem exists, a particular        version of a package is present and thus predict that other        configurations containing the same package version are also        subject to this problem.    -   monitor: This container runs the monitoring server monitor.py        which processes emails from system monitoring tools such as        Nagios or Ganglia which have been sent to the DataGrid        notification email server. The monitoring server authenticates        at least one email, parses the data according to account based        rules or templates, and feeds signal events for monitored        servers (e.g., when a service associated with a server changes        availability state becoming either offline or online). In an        alternate embodiment, email notifications are not sent to a        DataGrid email server, but are sent to a mail box controlled by        a customer. In this case, the application implements        per-customer-account workers which are configured with a POP3        mail box and which securely collect messages, parse them and        feed signal events for monitored servers.

In at least some embodiments, the configuration event handler retrievesthe system record for the server from the database (or creates a new oneas required) and computes the posted configuration ID (a hash of thecombined package names, versions, releases, architectures and vendorsfound in the configuration). If the system already currently has thisconfiguration, then the configuration handler updates the last pingedtimestamp of the system and the timestamp of the last time the systemreported itself using this configuration, and processing is finished.Otherwise, the configuration handler retrieves the configuration recordfrom the database (or creates a new one as required, includingcalculating its DGRI Score) and attaches this configuration to thesystem record (adding the previously known configuration to theconfiguration history list of the system record together with timestampsindicating the start and end of the use of this configuration). Next theconfiguration handler updates the previous and new configuration recordsto decrement the count of systems using the previous configuration andincrement this count for the new configuration. If the new configurationis present in the configuration history of this system, then this is aconfiguration rollback, and the handler generates an internal rollbacksignal event.

The signal event handler retrieves the system record for the server fromthe database. If a system record is not found, a new system record iscreated with no known configuration (e.g., to handle out-of-orderevents). If a configuration ID is provided with the signal, the signalhandler verifies it matches the current system configuration or rejectsthe signal (e.g., this may occur when the configuration was changed butthis change was not received by the DataGrid System, and a subsequentcrash or offline signal is received). If the signal is a ping, thesignal handler updates the ping count and the last ping timestamp of thesystem record; otherwise, it updates the signal count by type associatedto the signal survey record for this configuration record andrecalculates the configuration's DGRI Score.

In some embodiments, the incoming configuration and signal data isaccepted by a feed server which stores the data and orders it byreceived-at timestamp. This allows the DataGrid System to receiveconfiguration and signal data when only the feed server is operational,even if some or all other DataGrid services are down, and provides forthe regeneration of the database and re-processing of received dataeither entirely or over any span of time or over any subset, forexample, in the case of a change in the database schema. See FIGS. 65and 66 for example feed server requests and responses.

Alternate or additional embodiments of configuration and signalprocessing may include, but are not limited to, one or more of thefollowing features (or combinations thereof):

-   -   When a configuration change occurs, compare the previous and new        configurations and kick off a notification of system        configuration change which includes the previous and new        configuration IDs and the DGRI Score difference. The        notification may be limited to significant DGRI Score        differences. Such notifications may be sent to customers or used        internally by the DataGrid System to track and analyze such        changes.    -   When a new configuration is created, kick off a configuration        analysis process which creates or updates records associating to        at least one package (by name, version, release, architecture        and vendor) an array of configuration IDs and a set of tuples        indicating various package confidence scores created by        different algorithms. This associated data may also include an        array of configuration change sets that include or exclude this        package during a configuration change.    -   Rather than, or in addition to, tracking signal counts by signal        type associated to each configuration, signal processing may        save each signal event with a server signal history. This allows        for the replay and analysis of signal events over all servers        over time.

In at least some embodiments, the vulnerability server periodicallypolls the NIST (National Institute of Standards and Technology) NVD(National Vulnerability Database) CVE (Common Vulnerabilities andExposures) feed which provides comprehensive and frequently updated XMLdata for more than 70,000 CVEs organized by year. For at least one CVEthis data includes: a CVE identifier, a published time, a last modifiedtime, a list of vulnerable software by name and version, and CVSS(Common Vulnerability Scoring System) metrics including a CVSS score.The vulnerability server checks the HTTP HEAD of each annual archive forthe last modified time and compares this to a timestamp of the last timethis annual archive has been processed. If an updated archive is found,the server downloads and parses the archive and converts it from XML toJSON with minimal semantic changes and feeds each vulnerability backinto the main vulnerability server using Python's generator construct.For each new or modified vulnerability, the vulnerability server createsJSON documents representing the CVE data and updates the databaseaccordingly. In this process some semantic changes are made to the data:

-   -   The CVE list of vulnerable software ‘product’ field is        interpreted to determine what kind of entity is affected (e.g.,        OS, hardware/firmware, application, rpm-type package) and the        ‘edition’ field is interpreted into release and architecture        specifications for packages.    -   A number of vulnerability types are skipped as at least one        embodiment does not support their entities (e.g., Windows OS,        IOS, Android, firmware).

For each new or modified vulnerability, the vulnerability server updatesthe list of vulnerabilities associated to each affected package in thedatabase, marking each affected package entry as changed. Because theCVE data only lists the affected mainline software versions, whether ornot a particular package version is affected by a vulnerability isdetermined by checking against the list of fixed CVEs extracted frompackage changelogs and included in package specific configuration datasent to the DataGrid service whenever a configuration is fed from asubscriber server. In an alternate embodiment, the list of fixed CVEsfor a package is sourced from package changelogs obtained frompublically available package repositories rather than from serverconfiguration data. In an alternate embodiment, information aboutpackage and configuration vulnerabilities may be obtained from databasesprovided by vendors and/or communities, including operating systemvendors, packaged software vendors, open source communities, etc. Suchvulnerability databases may also provide information about when fix(s)were implemented for specific vulnerabilities relating to specificversions and/or releases and in which version/release of a package fixesfor specific vulnerabilities were implemented. In at least oneembodiment, the DataGrid service acquires and/or aggregates informationabout vulnerabilities from multiple different sources in order toprovide more complete and fine-grained information and identification ofvulnerable (and non-vulnerable) packages and configurations.

According to different embodiments, the vuln container may include oneor more utilities, such as, for example:

-   -   vulnupdate: vulnupdate is a maintenance utility which may        perform any of these operations:    -   Force-load from the NIST NVD feed and process the CVE archive        for a given year, processing some or all vulnerability updates        (new and changed CVE entries) and storing the updated        vulnerability information in the database.    -   Update the vulnerability list associated to some or all affected        packages in the database:    -   based on CVEs imported through force-loading    -   based on some or all CVEs in the NIST NVD feed    -   based on a subset of some or all CVEs currently in the database.        In this case, the subset may be some or all CVEs or a subset        match based on a query string.    -   Create and store one or more diagnostic files: an uncompressed        XML format CVE archive; a pretty-printed JSON format CVE        archive; a list of updated or new CVEs in a CVE archive in        comparison to CVEs in the application database; a list of        changed packages including their changes.    -   vulnget: vulnget is a utility which gets the CVE archive for a        given year from the NIST NVD feed and outputs it to stdout (in        JSON array, JSON line per CVE, or XML format). The output may        also be used to feed into the vulnupdate utility.

Calculating the DGRI Score

In at least one embodiment the DGRI Score is calculated for aconfiguration (or configuration element) based on:

-   -   The current number of servers using this configuration.    -   The total number of servers which have used this configuration        historically.    -   Trend in changing the number of servers that use this        configuration historically and/or in recent time (e.g., several        weeks)    -   The number of signals by signal type associated to the        configuration historically.    -   The number and CVSS severity score of vulnerabilities affecting        this configuration.

Alternate or additional embodiments may modify or extend this analysisto include:

-   -   Use of other CVSS metrics such as access-vector, access        complexity, authentication, confidentiality-impact,        integrity-impact and availability-impact.    -   Use of vulnerability or reliability data from alternate sources        such as websites which include user reports of vulnerability,        compatibility or reliability issues in software packages or        combinations of software packages, github issue tracking, etc.    -   Analysis algorithms which analyze any of the crowdsourced server        data and/or any differently sourced data such as vulnerability        data to yield useful insights derived from these large data        sets. For example, an algorithm may identify a misbehaving        package in a set of configurations using conditional        probability.    -   Separate scores for different algorithms, or different types of        data (e.g., separate scores representing vulnerability and        signal data), which may be used independently or used in        combination to produce a single score.    -   Separate scores for different entity types. For example,        packages may be scored independently of configurations, and the        relevant package scores may be included in the calculation of a        configuration score.    -   Excluding or including a vulnerability in the vulnerability list        associated to a package (and by extension to configurations)        based on manual input. In this case a human being determines        whether or not a vulnerability affects a particular package and        this determination over-rides the programmatic determination.    -   Using noise filtering and other techniques to determine which        signals may affect a configuration's confidence and to what        degree. For example, multiple signals coming from the same        systems may have less impact on a configuration's score than        fewer signals coming from a broader set of servers (including        servers from different customer accounts).

DataGrid Subscriber Component(s)

DataGrid Subscriber component(s) may be installed on servers associatedto customer accounts which participate in sending crowdsourced serverdata to the DataGrid System. According to different embodiments, theseDataGrid Subscriber component(s) may be configured or designed toinclude various functionality and/or functional components such as, forexample, one or more of the following (or combinations thereof):

-   -   DataGrid yum plugin: The DataGrid yum plugin intercepts        configuration change operations (e.g., install, upgrade,        uninstall, downgrade, as well as ‘history undo’), and after yum        determines the full set of changes, including their        dependencies, the plugin checks the DGRI Score and other        information relevant to the confidence of the proposed        configuration changes. It does this by taking the existing        configuration of the server (e.g., in the form of a list of        installed packages and their specific version information) and        performing the changes that yum is about to do upon this list to        create a target configuration. The plugin feeds the target        configuration using the DataGrid API, and requests the DGRI        Score for the target configuration and any additional relevant        information. It then displays this information and asks the user        whether or not to proceed with executing the configuration        change.    -   For example, the plugin may display the DGRI Score for the        current configuration, the score for the target configuration,        the score change (improvement or degradation), and optionally        additional information such as the number of known data points        for the new configuration and vulnerability information. These        data points may include: the number of systems using the target        configuration historically or currently, the number of signal        events received from these systems, the number of these events        by type (e.g., successful user or online events, or failure        events such as reboot, offline, logerror, user, crash or        rollback).    -   During operation, the user may ask to see additional information        by pressing the ‘?’ key rather than ‘Y’ or ‘N’ when prompted to        proceed. In this way the user may further judge whether or not        to proceed. The default action (‘Y’ or ‘N’ to proceed) is        determined by whether or not the target configuration DGRI Score        degrades. See figures #161-164 for example operations which use        the DataGrid yum plugin.    -   dgri-query: dgri-query is a command line interface (CLI) tool        which uses the DataGrid API server API to obtain information        about systems, configurations and vulnerabilities pertaining to        a customer account, and displays this information to the user.        Supported operations include: health check of the DataGrid API;        list some or all systems associated to an account; get        information on a specific system by system ID; get the DGRI        Score and metrics for a system's current configuration; get a        system's current configuration; get information for a specified        configuration; get the DGRI Score and metrics for a specified        configuration; get information on a specified vulnerability; get        a list of some or all vulnerable systems associated to an        account. See figures #146-155 for examples of dgri-query        operations.    -   dgri-logmon.py: dgri-logmon.py is started as a system service        during the server boot process. It monitors the server system        log, waiting for more data to read if at end-of-file.        dgri-logmon.py parses read data to extract kernel crash events        such as segmentation faults or out-of-memory-killer events,        server reboots, and log messages of severity Error or higher.        Some or all events are timestamped from the log message and fed        as signals to the DataGrid feed server API.    -   dgri-signal.py: dgri-signal.py is a command line utility which        constructs a signal request in JSON format based on command line        arguments and feeds this signal data to the DataGrid service        using the feed server API.    -   dgri-collect.py: dgri-collect is a command line utility which        uses server identification, operating system, and package        information from the subscriber server to construct        configuration data in JSON format, and feeds this data to the        DataGrid service using the feed server API.    -   crontab: A crontab on the subscriber server periodically        executes dgri-collect.py in order to feed the server's current        configuration to the DataGrid service using the feed server API.

According to different embodiments, the DataGrid Subscriber component(s)may also include an active agent which monitors services, resources,load or other operational characteristics of a server and feeds signalsto the DataGrid API. In some embodiments, the DataGrid Subscribercomponent(s) may be extended to support package management tools such asapt, and to support other software or module installation tools such asPEAR (PHP) or CPAN (Perl), and to support non-Linux operating systemssuch as Windows.

In some embodiments, the operation of the yum plugin may be extended tosupport user defined policies (e.g., customer account or serverspecific) which determine whether a proposed transaction may proceed ornot based, for example, on the target configuration DGRI Score, or thescore differential, or the number of data points associated to thetarget configuration. Such a policy may also be combined withconditionally prompted user input.

For example a policy may define:

-   -   a minimum score, below which the configuration change may not be        allowed    -   a score threshold, above which the user may not be prompted    -   in between these two, the user is prompted

A policy may also define a minimum score and minimum number of datapoints required before an update is allowed. This allows the normal OSauto-update not to install updates right away, but only after enoughpeople are using the target configuration and the target configurationDGRI Score is high enough (indicating both a sufficiently high score anda sufficiently high confidence).

In some embodiments, the DataGrid yum plugin may also recommendalternative configurations, or from the onset of its operation offer notthe latest configuration but a recommended configuration, based on DGRIScores. One way to do this is to add a command-line option such as “yumupgrade all—recommended” which causes the yum plugin to participate notonly in the post-package-selection phase but also in the initial packageselection process, replacing the default yum behavior (which is “get methe latest”).

In some embodiments, the DataGrid yum plugin may be supplemented byother package management plugins, extensions and replacement utilities(e.g., for the “apt” package manager). In some embodiments, the userprompt, as well as the change approval decision, may be provided througha workflow management system, which codifies the customer organization'spolicies and procedures and may be performed outside of the scope of theDataGrid system (e.g., through a web-based or mobile user interface).

DataGrid Configuration Management Tools

In at least one embodiment, the DataGrid System includes hardware and/orsoftware component(s) which may be installed on a server running aconfiguration management system such as Chef, Puppet, or Ansible. Theexample DataGrid Application embodiment supports Ansible, and includestwo DataGrid Ansible modules and two Ansible playbooks which are used toremotely execute commands on servers managed by Ansible. According todifferent embodiments, the DataGrid Configuration Management Tools maybe configured or designed to include various functionality and/orfunctional components such as, for example, one or more of the following(or combinations thereof):

-   -   dgri-query: see the DataGrid Subscriber component(s) section for        details.    -   dgri: dgri is an Ansible module which may be used to send        configurations or signals to the DataGrid API or to get the DGRI        Score and other information (e.g., lists of associated        vulnerabilities) for configurations and systems.    -   dgri-yum: dgri-yum is an Ansible module which may be used to        install, update or uninstall packages on servers managed with        Ansible, as well as to evaluate potential configuration changes,        for example by executing a dry-run of yum with the requested        package changes and a change set. In this way yum does not        actually apply the changes but instead returns a list of        proposed packages and versions. This change set is sent to the        DataGrid service for evaluation and recommendations (e.g., to        change a particular package version in the change set).    -   dgri.yml: dgri-yml is an Ansible playbook which may be used to:        -   Cause one or more servers being managed with Ansible to send            configuration data to the DataGrid feed server API.        -   Cause one or more servers being managed with Ansible to send            a signal to the DataGrid feed server API.        -   Get the DGRI Score for one or more servers being managed by            Ansible and display this information to the user.        -   See FIGS. 48-49 for example operations which use the            dgri.yml Ansible playbook.    -   dgri-yum.yml: dgri-yum.yml is an Ansible playbook which may be        used to install and uninstall packages on servers being managed        with Ansible (e.g., in consideration of the change in the DGRI        Score resulting from configuration changes). See FIGS. 56-60 for        example operations which use the dgri-yum.yml Ansible playbook.

Additional DataGrid System Functionality

In at least one embodiment, the DataGrid System may expose web-basedgraphical user interfaces which make use of and demonstrate new uses ofthe DataGrid Technology, including, for example, interacting with users,servers, and configuration management systems in novel ways. Exampleembodiments of various DGRID interfaces are illustrated and describedwith respect to FIGS. 13-46.

In at least some embodiments, various aspects of the DataGrid technologymay be embodied in the programmatically driven build process of virtualmachine images, physical machine images or container images. In manybest practices, especially in devops using CI/CD (ContinuousIntegration/Continuous Delivery), an automated system is used toassemble an image using a set of instructions which may pick a set ofthird party packages (e.g., OS, database, applications, etc.), as wellas the customer's own software, to use in the construction of the image.Changes to the customer's own software most often trigger the CI/CDrebuild process. The set of third party packages used during the buildprocess may be different from those used in previous builds. This mayhappen when newer packages become available, or because new customercode may require new packages (new versions or additional packages), orbecause of new package dependencies.

The DataGrid System may be used to assess the confidence and reliabilityof such configuration changes. It may also provide information about howthis assessment is made, or what defects or vulnerabilities may beintroduced by configuration changes, or what operational characteristicsof the resulting image may need to be changed to accord with or makebetter use of configuration changes (e.g., changes to packageconfiguration files, or to image resource allocation). This informationmay be used to inform the build process or to make build changes, or toinform the evaluation, testing, use or deployment of the resultingimage.

In some embodiments, API calls may be made to the DataGrid serviceduring or after the build process to evaluate configurations orconfigurations changes, or to recommend configuration changes. Thisinformation is used to inform decisions, whether made programmaticallyor by a user or in combination, of whether or not to proceed with thebuild, or how to test the resulting image, or to flag the image withinformation obtained from the DataGrid System such as the DGRI Score ofthe configuration, or configuration vulnerabilities, or problematicpackages, or recommended changes to the configuration, or recommendedchanges to package configuration files or image resource allocation orother operational characteristics. The DataGrid System may also providethis information in comparison to previous or alternate builds.

In some embodiments, one or more DataGrid service(s) may be used duringor after the Docker build process. This build process may be automatedusing Dockerfiles which are scripts of instructions used to build aDocker image step-by-step, or layer-by-layer, beginning with a source orbase image. Packages are included in the resulting image from the baseimage as well as from other sources such as package repositories or filesystems. For example, one layer of the build process may install mongodbpackages and their dependencies. In this way, succeeding layers of thebuild process may contribute to the sequential aggregation of aconfiguration (e.g., collection of packages) for the resulting image.

In one embodiment, after the build process is complete, a DataGridutility extracts package and other information from the resulting image,or from a deployed container based on that image, and constructs animage configuration using this data. The utility sends thisconfiguration to the DataGrid API for evaluation, and displays thisinformation to the user, optionally in comparison to previous builds oralternate images. In another embodiment instead of or in addition todisplaying information to the user, the utility automatically makes adecision to pass or fail the build (or the test of such build), whichdecision may optionally be based on criteria specified by the user forsuch a decision (e.g., minimum DGRI Score, the presence ofvulnerabilities or a minimum vulnerability score,blacklisted/whitelisted packages, etc.).

In another embodiment the Docker build system is modified or extended toautomatically send customer and image identifiers and imageconfigurations to the DataGrid API. A customer accesses a DataGrid webinterface to examine and evaluate image configurations using theDataGrid System, or to evaluate a configuration in relation to previousbuilds or other images, or in relation to recommended changes, or inrelation to images available through a public registry or repository ofDocker images.

In another embodiment DataGrid software associates configurations todifferent layers of the Docker image build process and evaluates theseseparately as well as in sequential relation. The examination of aresulting configuration as a series of configuration changes may yieldinsight into what layers contribute to the improvement or degradation ofthe configuration DGRI Score. For example, this may indicate that thebase image is not itself reliable, or that the packages installed for aparticular service such as Apache are responsible for degradation of theDGRI Score.

Yet another embodiment uses the DataGrid System during a build processcontrolled or monitored by the Jenkins build server when such a processis used to automate, monitor or test the build of a virtual machineimage, physical disk image, ISO install image or container image.Jenkins is a continuous integration tool often used to performcontinuous builds and automated test execution of software projects,virtual machine images, etc. In one such embodiment a DataGrid plug-infor Jenkins is used as part of the build or test of an image. Thisplugin extracts package and other information from an artifact of thebuild process, or from the built image, and constructs an imageconfiguration using this data. The plugin sends this configuration tothe DataGrid API for evaluation, and displays this information to theuser, optionally in comparison to previous builds or alternate images.In another embodiment instead of or in addition to displayinginformation to the user, the utility automatically makes a decision topass or fail the build (or the test of such build), which decision mayoptionally be based on criteria specified by the user for such adecision (e.g., minimum DGRI Score, the presence of vulnerabilities or aminimum vulnerability score, blacklisted/whitelisted packages, etc.).

Some embodiments may make use of server resource metrics such asresource allocation, CPU load, memory usage, network load, and diskload. DataGrid Subscriber component(s) (or resource monitor probes) sendsuch metrics at intervals or conditionally over time, directly orindirectly, to the DataGrid API. The DataGrid System associates thisdata to the configuration, or to packages, used by the subscriber serverat the time such metrics are sent. The DataGrid System analyzes thisdata in order to recommend changes in resource allocation to servers aswell as to recommend changes to configuration elements. This analysismay include many related data sets such as: server configurations overtime, server signals over time, and server resource metrics over time.For example, analysis may indicate that Weblogic application servercrashes occur significantly more frequently when the less than 2 GB ofmemory are allocated to the subscriber server. Based on this theDataGrid System may recommend resource allocation changes to Weblogicservers with less than 2 GB of memory, or provide reports of potentialresource allocation issues with configurations including the Weblogicapplication packages, or specific versions of these packages.

Example Procedures and Flow Diagrams

FIGS. 5-11 illustrate various example embodiments of differentDataGrid-related procedures and/or procedural flows which may be usedfor facilitating activities relating to one or more of the DataGridaspects disclosed herein.

According to different embodiments, at least a portion of the varioustypes of functions, operations, actions, and/or other features providedby the DataGrid Procedures of FIGS. 5-11 may be implemented at one ormore client systems(s), at one or more System Servers (s), and/orcombinations thereof.

In at least one embodiment, one or more of the DataGrid procedures maybe operable to utilize and/or generate various different types of dataand/or other types of information when performing specific tasks and/oroperations. This may include, for example, input data/information and/oroutput data/information. For example, in at least one embodiment, theDataGrid procedures may be operable to access, process, and/or otherwiseutilize information from one or more different types of sources, suchas, for example, one or more local and/or remote memories, devicesand/or systems. Additionally, in at least one embodiment, the DataGridprocedures may be operable to generate one or more different types ofoutput data/information, which, for example, may be stored in memory ofone or more local and/or remote devices and/or systems. Examples ofdifferent types of input data/information and/or output data/informationwhich may be accessed and/or utilized by the DataGrid procedures mayinclude, but are not limited to, one or more of those described and/orreferenced herein.

In at least one embodiment, a given instance of the DataGrid proceduresmay access and/or utilize information from one or more associateddatabases. In at least one embodiment, at least a portion of thedatabase information may be accessed via communication with one or morelocal and/or remote memory devices. Examples of different types of datawhich may be accessed by the DataGrid procedures may include, but arenot limited to, one or more of those described and/or referenced herein.

According to specific embodiments, multiple instances or threads of theDataGrid procedures may be concurrently implemented and/or initiated viathe use of one or more processors and/or other combinations of hardwareand/or hardware and software. For example, in at least some embodiments,various aspects, features, and/or functionalities of the DataGridprocedures may be performed, implemented and/or initiated by one or moreof the various systems, components, systems, devices, procedures,processes, etc., described and/or referenced herein.

According to different embodiments, one or more different threads orinstances of the DataGrid procedures may be initiated in response todetection of one or more conditions or events satisfying one or moredifferent types of minimum threshold criteria for triggering initiationof at least one instance of the DataGrid procedures. Various examples ofconditions or events which may trigger initiation and/or implementationof one or more different threads or instances of the DataGrid proceduresmay include, but are not limited to, one or more of those describedand/or referenced herein.

According to different embodiments, one or more different threads orinstances of the DataGrid procedures may be initiated and/or implementedmanually, automatically, statically, dynamically, concurrently, and/orcombinations thereof. Additionally, different instances and/orembodiments of the DataGrid procedures may be initiated at one or moredifferent time intervals (e.g., during a specific time interval, atregular periodic intervals, at irregular periodic intervals, upondemand, etc.).

In at least one embodiment, initial configuration of a given instance ofthe DataGrid procedures may be performed using one or more differenttypes of initialization parameters. In at least one embodiment, at leasta portion of the initialization parameters may be accessed viacommunication with one or more local and/or remote memory devices. In atleast one embodiment, at least a portion of the initializationparameters provided to an instance of the DataGrid procedures maycorrespond to and/or may be derived from the input data/information.

It will be appreciated that the procedural diagrams of FIGS. 5-11 aremerely specific examples of procedural flows and/or other activitieswhich may be implemented to achieve one or more aspects of the DataGridtechniques described herein. Other embodiments of procedural flows (notshown) may include additional, fewer and/or different steps, actions,and/or operations than those illustrated in the example proceduraldiagrams of FIGS. 5-11.

FIG. 5 shows an example of a Subscriber System Monitoring and ReportingProcedure 500 in accordance with a specific embodiment. In at least oneembodiment, the one or more instances of the Subscriber SystemMonitoring and Reporting Procedure may be installed and executed at oneor more different data centers for monitoring and reporting (e.g., tothe DataGrid Analytics Service) various types of information relating toone or more servers in each data center, such as, for example: serveractivities and events, configuration information, installed packages,errors/problems, and/or other server telemetry information describedand/or referenced herein.

For example, as illustrated in the example embodiment of FIG. 5 theSubscriber System Monitoring and Reporting Procedure may be operable tofacilitate, initiate and/or perform one or more of the followingoperation(s)/action(s) (or combinations thereof):

-   -   Install and initiate (502) one or more DataGrid Subscriber        Application(s) (also referred to herein as “DataGrid Client        Application(s)”) at selected data center(s).    -   Telemetry/Inventory gathering: Periodically scan all or selected        group(s) of running/active subscriber systems of data center for        telemetry events, signals, inventory, configuration, version        and/or other information. Clients have ability to opt in/out of        scan. For each data center, periodically scan/re-scan (504)        configurations of subscriber system(s), and collect inventory of        installed packages, configuration elements and related        information, such as, for example, one or more of the following        (or combinations thereof):        -   package versions,        -   package names,        -   IP addresses,        -   open ports,        -   network connections,        -   configuration parameters,        -   etc.    -   Organize and Anonymize (506) collected information. In at least        some embodiments, this may include encrypting and/or removing        personalized information from the information to be reported to        the DataGrid Analytics Service, such as, for example, IP        addresses, MAC addresses, customer names, security data, etc.    -   Send (508) anonymized configuration data to the DataGrid        Analytics Service.    -   Initiate rescanning (510) of selected subscriber system(s) upon        detecting one or more Rescan Triggering Events such as, for        example, one or more of the following (or combinations thereof):        -   Reboot of a subscriber system.        -   Change (e.g. install/uninstall/upgrade/downgrade) of a            subscriber system package. According to different            embodiments, such changes may be detected in a number of            ways, such as, for example:            -   Using a package manager plugin which receives                notifications.            -   Implementing the change(s) to the subscriber system via                the DataGrid System (e.g., user accesses DataGrid System                GUI to implement changes to an identified subscriber                system, and the DataGrid System responds by causing the                changes to be implemented at the identified subscriber                system).            -   Checking the package database for changes (e.g., by                comparing and detecting changed file times, checksums,                etc.).        -   Configuration change(s) to one or more subscriber system(s)            and/or their configuration elements (e.g., changes to            configuration file parameters, etc.)        -   Time-based events/conditions (e.g., rescan every n minutes,            rescan every n hours, etc.).        -   And/or other types of event(s) and/or condition(s) which            satisfy defined minimum threshold criteria.

By way of illustration, the Subscriber System Monitoring and ReportingProcedure may be configured or designed to perform system scans once perhour and compare to previous scan(s). In some embodiments, changes whichare detected may be reported to the DataGrid Analytics Service.Additionally, in at least some embodiments, changes which are detectedmay trigger a rescan of the subscriber system. For example, periodicallymonitor and compare checksum and/or timestamp info of subscriber systemconfiguration file (e.g., package database or Apache http serverconfiguration file). Any detected change in checksum/timestampautomatically triggers re-scan of subscriber system.

In some embodiments, a separate instance of a DataGrid SubscriberApplication may be instantiated for each subscriber system in the datacenter. For a given data center, multiple instances of the DataGridSubscriber Application may run concurrently with each other formonitoring and reporting telemetry events, signals, and/or otherinformation to the DataGrid Analytics Service.

A data center may include a plurality of different systems (e.g.,physical servers, virtual servers, virtual machines, containers, etc.)which are managed, controlled, owned and/or administered by differentcustomers. In at least some embodiments, each customer may choose tohave their systems “opt-in” or “opt-out” to/from the DataGrid System. Asystem which has been designated to “opt-in” to the DataGrid System maybe referred to as a “subscriber system”, and may install and run aDataGrid Subscriber Application for monitoring and collecting thatsystem's telemetry events, signals, and/or other information andreporting the collected information to the DataGrid Analytics Service.In other embodiments, subscriber systems may include other types ofsystems, devices, and/or components which are not part of a data center.Examples of different types of subscriber systems may include:

-   -   Physical servers;    -   Virtual servers;    -   Virtual machines;    -   Switches;    -   Routers;    -   Mobile devices;    -   Network devices;    -   Printers;    -   Containers;    -   And/or other types of network device(s)/system(s), including        network systems beyond servers, such as home and industrial        automation appliances, transportation and/or other        Internet-of-Things (IoT) devices.

FIG. 6 shows an example of a DataGrid Analytics Service Procedure 600 inaccordance with a specific embodiment. In at least one embodiment, atleast a portion of the DataGrid Analytics Service Procedure may beimplemented at one or more DataGrid Servers (e.g., 420, FIG. 4) and/orat other network device(s)/system(s) which have been configured ordesigned to include functionality for performing DataGrid analyticsservices.

In the specific example embodiment of FIG. 6, it is assumed for purposesof illustration, that telemetry information about a specific subscribersystem (e.g., from a specific data center) has been received at aDataGrid Analytics Server which is running an instance of the DataGridAnalytics Service Procedure. In at least some embodiments, batched datamay be received which includes telemetry info about multiple differentservers (e.g., from a given data center).

As shown at 602, the DataGrid Analytics Service Procedure may receive,authenticate, and analyze reported telemetry and other information foridentified subscriber system. Examples of telemetry information mayinclude, but are not limited to, one or more of the following (orcombinations thereof):

-   -   System configuration information such as, for example, one or        more of the following (or combinations thereof):        -   OS versions;        -   Installed packages and corresponding versions;        -   CPU and Mem consumption;        -   Network service end connections;        -   Configuration elements and/or parameters (e.g., memory pool            sizes, number of worker threads, etc.);        -   Etc.    -   System signal information, such as, for example, one or more of        the following (or combinations thereof):        -   Reboot events;        -   Crash events;        -   Error events;        -   System health status;        -   System or application log events;        -   Successful events (e.g., system recovered, system up, etc.);        -   Etc.

Other types of information which may be reported to, and analyzed by theDataGrid Analytics Service may include, but are not limited to, one ormore of the following (or combinations thereof):

-   -   package names,    -   package versions,    -   IP addresses,    -   open ports,    -   network connections,    -   configuration parameters,    -   etc.

As illustrated in the example embodiment of FIG. 6, the DataGridAnalytics Service Procedure may determine (604) the identity of asubscriber system whose telemetry information is to be processed andrecorded, and may analyze (608) the subscriber system telemetryinformation for configuration changes (e.g., since lastupdate/analysis). In at least one embodiment, if no changes are detected(612) for the identified subscriber system, the DataGrid AnalyticsService Procedure may advance to the operation of updating (624) statusstatistics relating to the identified subscriber system.

In at least one embodiment, if the DataGrid System identifies or detects(610, 612) configuration changes to subscriber system (e.g., since lastupdate/analysis), it may record details relating to the subscribersystem's configuration changes and/or current configuration. Examples ofvarious types of configuration changes may include, but are not limitedto, one or more of the following (or combinations thereof):

-   -   Change of component/device/system configuration settings and/or        parameter(s).    -   Change of system component(s).    -   Change of system package(s).    -   Change of system container(s).    -   Change of system package version.    -   Change of system container version.    -   Change of OS, package or component version (e.g., kernel        version/release, library version/release, etc.).    -   Change of OS, package or component distribution (e.g., vendor).    -   Change of OS, VM or container image.    -   Change of system configuration, including resource provisioning        and constraints (e.g., allocated/reserved/max. CPU use, memory        size, I/O or cache buffer sizes).    -   Change in operational parameters, such as number of data        replicas, replica location, number of servers in an auto-scaling        group, criteria for triggering adding/removing auto-scaling        group servers, frequency and type of backup (e.g., incremental        vs. full).    -   Etc.

Assuming that the DataGrid System identifies configuration changes tothe subscriber system, the DataGrid System may determine the subscribersystem's current configuration, and may perform a search of the DGdatabase to determine (614) if the configuration of identifiedsubscriber system matches that of any other subscriber systemconfiguration in DG database. If the DataGrid System identifies anothersubscriber system with a configuration matching the currentconfiguration of identified subscriber system (being analyzed), it maylink the system configuration analysis record of matching subscribersystem (identified in the DG database) to identified subscriber system(being analyzed).

Alternatively, if the DataGrid System is unable to identify anysubscriber system(s) in the DG database having a configuration matchingthe current configuration of identified subscriber system, the DataGridSystem may create (618) new subscriber system configuration record forthe identified subscriber system, and populate it with currentconfiguration information relating to the identified subscriber system.

As shown at 620, the DataGrid Analytics Service Procedure may analyzeconfiguration information (associated with newly created subscribersystem configuration record) for various metrics such as, for example,one or more of the following (or combinations thereof):

-   -   Vulnerabilities.    -   Compatibility.    -   Reliability.    -   Popularity.    -   Trend (e.g., change of one or more metrics over time).    -   And/or other types of subscriber system metrics.

As shown at 622, the DataGrid Analytics Service Procedure may generateScoring Information for the current configuration of the identifiedsubscriber system. According to different embodiments, the generatedScoring Information may include various types of scores (and associatedscore values), such as, for example, one or more of the following (orcombinations thereof):

-   -   Vulnerability Score.    -   Compatibility Score.    -   Reliability Score.    -   DGRI Score (DataGrid reliability index score).    -   Configuration popularity score (overall configuration        popularity, taking into account only key functional packages,        e.g., Ubuntu 14 with apache and MySQL).    -   Package popularity score (e.g., popularity of MySQL vs.        PostgreSQL).    -   Package version popularity score (e.g., popularity of v1 vs.        v2).    -   Trend score (package trending up/down, package version trending        up/down, etc.).    -   Combined score (e.g., a DataGrid-chosen weighted combination of        other scores).    -   User-weighted score (each user can choose a formula for the        scores shown to him, e.g., by defining weights of the other        scores: e.g., trend with weight 0 (to ignore trend score),        vulnerability with weight 0.5 (so half of score is determined by        vulnerability level), reliability with weight 0.25, etc.).    -   And/or other types of scores which may be used to indicate the        subscriber system's vulnerabilities, compatibilities,        reliability, popularity, etc.

According to different embodiments, generation or calculation of thescores and/or scoring information may be based on defined scoring models(e.g., defined scoring model for each respective score type), and may bebased, at least partially, on the analyzed metrics associated with theidentified subscriber system.

In at least one embodiment, when subsequent configuration changes of thesubscriber system are detected, the DataGrid System may initiaterescoring of the subscriber system's Scoring Information based on themodified subscriber system configuration. Rescoring may also beinitiated or triggered based on other factors, such as, for example,detrimental signal info from similar subscriber system configurations.

As shown at 624, the DataGrid Analytics Service Procedure may update oneor more status statistics relating to identified subscriber system.Examples of various status statistics which may be updated may include,but are not limited to, one or more of the following (or combinationsthereof):

-   -   System Up time.    -   Configuration run-hours (e.g., number of total servers with a        given configuration, each multiplied by the number of hours this        server has run in that configuration).    -   Number of signals received from system.    -   Timestamp info relating to telemetry info.    -   Any detected errors in telemetry info.    -   Number of System reboot(s).    -   Etc.

As shown at 626, the DataGrid Analytics Service Procedure may analyzethe received subscriber system telemetry information to determine if anysubscriber system signal information is present. If subscriber systemsignal information is identified as being present, the DataGrid Systemmay facilitate, enable, initiate, and/or perform one or more of thefollowing operation(s), action(s), and/or feature(s) (or combinationsthereof):

-   -   Record (628) the identified subscriber system signal        information.    -   Update (630) status statistics relating to the identified        subscriber system (e.g., based on the identified subscriber        system signal information).    -   Update (632) status statistics relating to the identified        subscriber system configuration(s) (e.g., based on the        identified subscriber system signal information).

As shown at 634, the DataGrid Analytics Service Procedure may initiate aScoring Model Update Procedure, such as that illustrated and describedwith respect to FIG. 7.

In at least some embodiments, a separate instance of a DataGridAnalytics Service Procedure may be instantiated for different subscribersystems to be analyzed and scored. Additionally, multiple instances ofthe DataGrid Analytics Service Procedure may run concurrently with eachother.

FIG. 7 shows an example of a Scoring Model Update Procedure 700 inaccordance with a specific embodiment. In at least one embodiment, atleast a portion of the Scoring Model Update Procedure may be implementedat one or more DataGrid Servers and/or at other networkdevice(s)/system(s) which have been configured or designed to includefunctionality for performing DataGrid analytics services.

As shown at 702, the Scoring Model Update Procedure may continuouslyand/or periodically monitor for detection of triggering event(s) forinitiating one or more Scoring Model Update(s). Examples of differenttypes of events which may trigger Scoring Model Updates may include, butare not limited to, one or more of the following (or combinationsthereof):

-   -   Time based events (e.g., periodically every hour, few hours,        day, etc.)    -   Critical mass of telemetry events accumulated (e.g., multiple        failure events from configurations with the same configuration        element). For example, sufficient number of failure signals (or        success signals) received that can be correlated to a particular        configuration or configuration element (e.g., a package, a        configuration parameter, etc.). Failure signals may indicate        systems failing to perform properly. Success signals may        indicate systems continuing to work properly. Signals may be        selectively reported on subscriber systems that have a        particular configuration element(s).    -   Telemetry event(s) occurrence (e.g., telemetry data sent by a        subscriber system, regardless of the type of event or        configuration).    -   The release of a new version of an OS and/or package version,        containing new features, bug fixes and/or fixes for        vulnerabilities, incompatibilities, etc.    -   Increase or decrease in reported usage of a new or updated        configuration element(s)    -   And/or other types of event(s)/condition(s) which satisfy        defined threshold criteria for triggering Scoring Model        Update(s).

As shown at 704, if a Scoring Model Update triggering event is detected,the DataGrid System may respond by identifying the affected component(s)associated with the detected triggering event. For example, in at leastone embodiment where the triggering event relates to detection ofmultiple failure (or success) signals from multiple different subscribersystem, the DataGrid System may analyze the failure (or success) signalsto identify component(s) of the subscriber system which may benegatively (or positively) affected.

As shown at 706, the Scoring Model Update Procedure may update andrecord component score(s) for the identified component(s) which may beaffected. In at least one embodiment, the updated component scores maybe determined using the failure/success signal data and/or otherassociated telemetry information.

As shown at 708, the Scoring Model Update Procedure may identifyaffected system configuration(s) which use one or more of the affectedcomponent(s), and may update and record system score(s) for theidentified system configurations (e.g., using the failure/success signaldata and/or other associated telemetry information). In at least oneembodiment, the updating of the system scores includes identifyingaffected subscriber system(s) having configuration(s) which use one ormore of the affected component(s), and updating the respective score(s)associated with each of the affected subscriber system(s).

As shown at 710, the Scoring Model Update Procedure may identifysubscriber systems which are affected by updated system score(s), andsend notification(s) of updated system score(s) to identifiedsubscribers. In at least one embodiment, a subscriber may be implementedas an automated processes which monitors notification/subscriptionchannel(s), and which initiates automated activities in response to thenotifications.

In at least some embodiments, a separate instance of a DataGridAnalytics Service Procedure may be instantiated for different subscribersystems to be analyzed and scored. Additionally, multiple instances ofthe DataGrid Analytics Service Procedure may run concurrently with eachother.

FIG. 8 shows an example of a Subscriber Recommendation and ConditionalUpdating Procedure 800 in accordance with a specific embodiment. In atleast one embodiment, at least a portion of the SubscriberRecommendation and Conditional Updating Procedure may be implemented atone or more DataGrid Servers and/or at other network device(s)/system(s)which have been configured or designed to include functionality forperforming DataGrid analytics services.

As shown at 702, the Subscriber Recommendation and Conditional UpdatingProcedure may continuously and/or periodically monitor for detection oftriggering event(s) which may trigger initiation of arecommendation/conditional updating analysis. Examples of differenttypes of events which may trigger initiation of one or morerecommendation/conditional updating analyses may include, but are notlimited to, one or more of the following (or combinations thereof):

-   -   Notification of updated system score(s) (e.g., either increase        or decrease);    -   Notification of updated component score(s) (e.g., either        increase or decrease);    -   Notification of new component version availability;    -   Defined event(s)/condition(s), which, for example, may include        user-defined event(s)/condition(s), pre-defined        event(s)/condition(s), etc.    -   Time-based event(s)    -   And/or other types of event(s)/condition(s) which satisfy        defined threshold criteria for triggering a        recommendation/conditional updating analysis.

In the specific example embodiment of FIG. 8, it is assumed for purposesof illustration, that the DataGrid System receives one or morenotification(s) regarding a reduction in a component score for anidentified system component, thereby triggering arecommendation/conditional updating analysis to be performed.

As shown at 804, the Subscriber Recommendation and Conditional UpdatingProcedure may identify affected subscriber system(s) which may beaffected by the triggering event(s). For example, in the present examplescenario, the DataGrid System may query the DG database to identifysubscriber system(s) having system configurations which include theidentified system component (e.g., associated with the reduced componentscore).

As shown at 806, for each affected subscriber system identified, theSubscriber Recommendation and Conditional Updating Procedure mayautomatically identify alternative system configuration(s) for thataffected system. According to different embodiments, some of theactivities and/or operations which may be carried out by the DataGridSystem as part of the process of identifying alternative systemconfigurations may include, but are not limited to, one or more of thefollowing (or combinations thereof): finding alternate versions ofaffected component(s) which have relatively same or higher componentscore(s); creating new alternate system configuration(s) which utilizethe alternate components; computing system score(s) for one or more ofthe alternate system configurations; comparing scores of alternatesystem configurations to those of the affected subscriber systems, etc.

Accordingly, as shown at 808, the Subscriber Recommendation andConditional Updating Procedure may compute respective system score(s)for each of the alternate system configurations.

As shown at 810, the Subscriber Recommendation and Conditional UpdatingProcedure may select a preferred system configuration based on definedselection criteria. In at least one embodiment, the preferred systemconfiguration may be selected from among the current (or existing)system configuration (e.g., which utilizes the affected component) andthe alternate system configuration(s) (e.g., which do not use theaffected component). According to different embodiments, the definedselection criteria may be standardized criteria, pre-defined criteria,and/or user-defined criteria such as, for example: select system withhighest DGRI score or highest relative system score(s) (e.g., wheresystem score is computed as the average of all system-related scores).

As shown at 812, the Subscriber Recommendation and Conditional UpdatingProcedure may determine whether or not to initiate a systemconfiguration update (e.g., for one or more affected subscribersystem(s)) based on defined policy criteria. According to differentembodiments, the defined policy criteria may be standardized criteria,pre-defined criteria, and/or user-defined criteria such as, for example:only initiate upgrade for an identified subscriber system if the systemscore of the selected (preferred) system configuration exceeds thesystem score of the subscriber system's current configuration by atleast n % (e.g., n=5, 10, 20, 25, etc.).

In at least one embodiment, if the Subscriber Recommendation andConditional Updating Procedure determines that the defined policycriteria for initiating an system configuration update has not been metor satisfied (e.g., for an identified subscriber system), it may refrainfrom initiating a system configuration update for the identifiedsubscriber system, and may send notification to the identifiedsubscriber system about the event information and/or itsrecommendations.

In at least one embodiment, if the Subscriber Recommendation andConditional Updating Procedure determines that the defined policycriteria for initiating a system configuration update or modificationhas been met or satisfied (e.g., for an identified mutable subscribersystem), it may respond by taking appropriate action(s) to initiate(814) a system configuration update for the identified mutablesubscriber system.

In at least one embodiment, a system may be considered to be a mutablesystem if changes or modifications can be made to that system'senvironment (e.g., where the system's environment may be defined as acollection of resources that have been provisioned and configured). Formutable systems (e.g., systems which permit changes or modification ofthe system's component(s), configuration(s), and/or other resources),the DataGrid System may automatically implement the selected systemconfiguration updates using configuration automation tools such as Chef,Puppet, CFEngine, Salt, Ansible, and the like.

Alternatively, a system may be considered to be an immutable system ifno changes or modifications can be made to that system's environment. Ascommonly known in the art, a basic concept of programming immutabilityis that once a system has been instantiated (be it a physical server,virtual server, virtual machine image, container image, systemcomponent, etc.), that system's environment is never changed. Instead,changes or modifications are effected by replacing the existing instancewith a new, modified instance which incorporates the desiredchanges/modifications. In at least some embodiments, this may beachieved via the use of Continuous Integration (CI) and ContinuousDelivery (CD) workflows, such as those illustrated and described withrespect to FIGS. 9 and 10.

Continuous Integration (CI) is a development practice that encouragesdevelopers to integrate code into a shared repository frequently (e.g.,several times a day). Each check-in is then verified by an automatedbuild, allowing teams to detect problems early. Examples of ContinuousIntegration systems include Jenkins, and Travis CI. Continuous delivery(CD) is a software engineering approach in which teams produce softwarein short cycles, ensuring that the software can be reliably released atany time (and, for software-as-a-service systems, may be deployed). Itaims at building, testing, and releasing software faster and morefrequently. The approach helps reduce the cost, time, and risk ofdelivering changes by allowing for more incremental updates toapplications in production.

As illustrated in the example embodiment of FIG. 8, if the SubscriberRecommendation and Conditional Updating Procedure determines (812) thatthe defined policy criteria has been satisfied for initiating a systemconfiguration update for an immutable system, the DataGrid System maytake appropriate action to initiate the immutable system configurationchange by sending (814) notification of the recommended configurationchange(s) to one or more Continuous Integration (CI) system(s). In atleast one embodiment, it may be assumed that the Continuous Integration(CI) and Continuous Delivery (CD) systems are configured or designed toeffect implementation of the recommended configuration changes byinstantiating and deploying a new, modified instance of the identifiedimmutable system which incorporates the recommended changes.

For illustrative purposes, some examples of configurationrecommendations which may be generated by the DataGrid System may be:

-   -   For component Y of System ABC, set parameter X to 5 instead of        8.    -   For System DEF, upgrade package X to version Y.    -   For System DEF, remove package X.    -   For System DEF, replace package X version Y with package Z        version W (e.g., replacing MySQL with MariaDB).    -   For System DEF, upgrade two or more related packages, e.g.,        package X to version Y and package Z to version W.    -   For System DEF, upgrade package X to the latest available        version.    -   For System HIJ, set data redundancy level to 3 replicas.    -   For component Y of System HIJ, set data redundancy level to 3        replicas (e.g., if Y is a database or object store).    -   For System KLM, set autoscaling group size to 8 members.    -   For System KLM, set autoscaling trigger parameter P to value V.    -   For System KLM, set required redundancy to 3 systems running in        different geographic locations or availability zones.    -   For System KLM, set backup policy to BBB (e.g., daily        incremental backups, with monthly full backups, keep for 90        days).    -   For System DEF, use OS image H (e.g., setting distro name,        version, update level).    -   For System DEF, use container image ID H.    -   For System DEF, use container image ID H and update package X to        version Y.    -   For System ABC, set resource allocation X to Y (e.g., CPU to 2        dedicated cores, memory limit to 2 GB, storage performance to        1000 IOPS, or disk size to 100 GB, etc.). (Note: IOPS=I/O        Operations Per Second a storage performance metric)    -   For Systems KLM and OPQ, the network route to R.    -   For System DEF, install patch, hotfix or update L.    -   For component Y of system ABC, use version V of library P.    -   For application A of system ABC, use version E.    -   For application A of system ABC, install patches L, M and N.    -   Etc.

As illustrated in the example embodiment of FIG. 8, it is assumed thatan instance of the updated subscriber system configuration (e.g.,whether it be a mutable subscriber system, or an immutable subscribersystem) has been instantiated and deployed in a runtime environment, andthat an instance of the Subscriber System Monitoring and ReportingProcedure is periodically collecting and reporting telemetryevent(s)/signal(s) and other information relating to the runtimeoperation of the updated subscriber system configuration.

As shown at 818, the DataGrid System may acquire and analyze thetelemetry event(s)/signal(s) and other information relating to theruntime operation of the updated subscriber system configuration.

As shown at 820, using the acquired telemetry and related information,the Subscriber Recommendation and Conditional Updating Procedure mayinitiate one or more Scoring Model Update Procedure(s) for updating oneor more scores relating to the updated subscriber system configurationand/or components thereof.

As shown at 822, the Subscriber Recommendation and Conditional UpdatingProcedure may cause the DataGrid System to generate and sendnotification to the identified subscriber system about the relevantevent information and/or response information. For illustrativepurposes, some examples of such notifications may be:

-   -   System score decreased by N, but no modifications were made to        current system configuration;    -   System score decreased by Y, and new configuration implemented:        parameter X of component A set to 5 instead of 8, package X        upgraded to version Z;    -   Score of component A decreased by M %, but no modifications were        made to current system configuration;    -   Score of component A decreased by M, system score decreased by        Y, recommend setting parameter X of component A to 5 instead of        8;    -   Score of component A decreased by M, recommend upgrading package        X to version Z;    -   Etc.

In at least some embodiments, separate instances of a SubscriberRecommendation and Conditional Updating Procedures may be instantiatedfor different subscriber systems. Additionally, multiple instances ofthe Subscriber Recommendation and Conditional Updating Procedure may runconcurrently with each other.

FIG. 9 shows an example of an Automated Continuous Integration (CI)Workflow 900 in accordance with a specific embodiment. In at least oneembodiment, at least a portion of the Automated CI Workflow may beimplemented at one or more Continuous Integration systems such as, forexample, 304 of FIG. 3.

As illustrated in the example embodiment of FIG. 9, there are severaldifferent paths for causing a Continuous Integration system to performtesting and evaluation of new/modified software components. One suchpath is illustrated by the sequence of operations indicated at 902-906of FIG. 9. For example, as shown at 902, it is assumed that a developeror other entity initiates a “check-in” of modified software code into aVersion Control (VC) system. In at least one embodiment, the “check-in”operation is initiated for the purpose of causing the modified softwarecode to be tested and evaluated by the Continuous Integration system.The VC system may then notify (904) the Continuous Integration (CI)system of modified code to be tested. In alternate embodiments, the CIsystem may periodically poll the VC system for modified code to betested. Upon receiving the notification from the VC system, the CIsystem may obtain and build (906) (e.g., compiles) a base image of anupdated app code which includes the modified code to be tested.

Another such path is illustrated by the sequence of operations indicatedat 932-936 of FIG. 9. For example, as shown at 932, the ContinuousIntegration system may receive notification of a system configurationchange recommendation from the DataGrid Analytics Service (e.g., asillustrated at 816, of FIG. 8). According to different embodiments, aconfiguration change recommendation notification may include differenttypes of configuration change recommendations such as, for example, oneor more of the following (or combinations thereof):

-   -   package version change recommendations;    -   code change recommendations;    -   parameter change recommendations;    -   component version change recommendations;    -   container change recommendations;    -   package change recommendations;    -   component change recommendations;    -   virtual machine change recommendations;    -   version upgrade recommendations;    -   version downgrade recommendations;    -   etc.

Upon receiving such notification, the CI system may read (934) therecommended configuration changes, and build (936) a base image of amodified system configuration using the system configuration changerecommendations.

As shown at 908, the CI system utilizes the base image, and installsbuilt code. In at least one embodiment, this may result in the creationof a “new build” disk image which is ready to be instantiated (e.g., runon virtual machine, incorporated into container image, etc.), tested,and evaluated by the Continuous Integration system. As shown at 910, theCI system deploys a test environment, and instantiates a runtimeinstance of the new build disk image for testing and evaluationpurposes. The CI system then runs (912) one or more selected testsuite(s) on the instance of the test disk image running in the testenvironment, and evaluates the test results to determine (914) if alltests were passed successfully.

In at least one embodiment, if the CI system determines that all testswere passed successfully, it may generate and send (916) to the DataGridAnalytics Service “success” telemetry event(s) and other informationrelating to the testing and evaluation of the new build. Additionally,the Continuous Integration system may take appropriate actions toinitiate a Continuous Delivery workflow for performing additionaltesting and deployment of the new build. An example embodiment of aContinuous Delivery workflow is illustrated in FIG. 10.

Returning to 914 of FIG. 9, if the CI system determines that one or moretests were not passed successfully, it may generate and send (920) tothe DataGrid Analytics Service “fail” telemetry event(s) and otherinformation relating to the testing and evaluation of the new build.Additionally, as shown at 922, the Continuous Integration system mayquery the DataGrid Analytics Service to determine if any alternateconfiguration recommendations are available. If alternate configurationrecommendations are available from the DataGrid Analytics Service, theCI system may read (934) the alternate configuration recommendations,and build (936) a base image of a modified system configuration usingthe alternate configuration recommendations.

In at least some embodiments, the Continuous Integration workflow mayinclude automated functionality for discriminating between a failurecaused by a coding error and one caused by the OS/container base imageitself. In this way, the success/failure notification from a build maybe fed as a signal that may then be used (e.g., by the DataGridAnalytics Service) to evaluate an OS/container configuration.

In some embodiments, the operation(s) of building a new base image maybe implemented as a set of configuration modification instructions to beexecuted on an existing base image, such as, for example during the“cloud init” phase of an Amazon EC2 virtual machine image, or using aDockerfile that builds a new image starting from a prior image andperforming configuration changes to create the desired configuration.

FIG. 10 shows an example of an Automated Continuous Delivery (CD)Workflow 1000 in accordance with a specific embodiment. In at least oneembodiment, at least a portion of the Automated CD Workflow may beimplemented at one or more Continuous Delivery systems such as, forexample, 304 of FIG. 3.

As shown at 1002, it is assumed that the Continuous Delivery systemreceives notification from the Continuous Integration system that a newbuild is ready for attempted deployment in live production environments.

As shown at 1004, CD system deploys new/modified version of applicationbuild in selected live production environment(s) (e.g., new build isdeployed at selected severs which are deployed in live customerenvironment), and directs a portion of traffic to each for testing,verification and evaluation purposes. These initial live production testservers may be referred to as “Canaries”.

As shown at 1006, the Continuous Delivery system monitors and evaluatesperformances of each of the Canaries. In at least one embodiment, if theContinuous Delivery system determines that the deployed Canaries are notperforming well (e.g., performances of some or all Canaries does notsatisfy defined minimum performance criteria or fails to processapplication requests), the CD system may roll back (1018) deployment ofthe Canaries, for example, by restoring diverted traffic back todeployed builds of the previous build version. In at least someembodiments, the Continuous Delivery system may generate and send (1020)to the DataGrid Analytics Service “fail” telemetry event(s) and otherinformation relating to the deployment and evaluation of the new build.Additionally, as illustrated at 1022, the Continuous Delivery system maynotify the Continuous Integration system of the failed deployment of thenew build, and may take appropriate action to cause the workflow toreturn back to the CI workflow (e.g., as illustrated at 921 of FIG. 9).In some embodiments, this may trigger an alternate configuration to beattempted for the new deployment, resulting in a successful deployment.

In at least some embodiments, if the Continuous Delivery systemdetermines that the deployed Canaries are performing well (e.g.,performances of the deployed Canaries satisfies defined minimumperformance criteria), the CD system may deploy (1008) the new build toall (or selected) live production environment(s), and may continuouslyand/or periodically monitor (1010) the production environment(s) whereinstances of the new build have been deployed for occurrences ofsuccess/fail telemetry event(s).

As illustrated at 1010 in the example embodiment of FIG. 10, if theContinuous Delivery system detects failures in one or more of the newbuilds which have been deployed to the live production environment(s),the CD system may roll back (1018) deployment of the new builds, forexample, by redeploying the previous build version and/or by routingtraffic to deployed builds of the previous build version. The ContinuousDelivery system may also generate and send (1020) to the DataGridAnalytics Service “fail” telemetry event(s) and other informationrelating to the deployment and evaluation of the new build.Additionally, as illustrated at 1022, the Continuous Delivery system maynotify the Continuous Integration system of the failed deployment of thenew build, and may take appropriate action to cause the workflow toreturn back to the CI workflow.

As shown at 1012, if the Continuous Delivery system detects successtelemetry event(s) in all (or selected) live production environment(s)where the new builds have been deployed, the Continuous Delivery systemmay report (1012) the “success” telemetry event(s) to the DataGridAnalytics Service. Additionally, in at least some embodiments, the CDsystem may take appropriate action 1014 to remove old build version(s)from production environments (e.g., by freeing appropriate systemresources).

Proactive DataGrid Mechanisms for Testing Unknown Data Points

Monte Carlo simulation techniques generally refer to a broad class ofcomputational algorithms that rely on repeated random sampling to obtainnumerical results. For example, in some embodiments, Monte Carlosimulation furnishes the decision-maker with a range of possibleoutcomes and the probabilities they will occur for any choice of action,and performs risk analysis by building models of possible results bysubstituting a range of values (e.g., probability distribution) for anyfactor that has inherent uncertainty. It may then calculate results overand over, each time using a different set of random values from theprobability functions. Depending upon the number of uncertainties andthe ranges specified for them, a Monte Carlo simulation could involvethousands or tens of thousands of recalculations before it is complete.

FIG. 12 shows an example graph 1250 (with legend 1210) (collectivelyreferred to as chart 1201) in which a range of known and unknown datapoints are plotted. In this particular example, it is assumed that theplotted data points relate to the measured outcomes (Y-axis, 1251) of aparticular system configuration metric (e.g., performance, reliability,vulnerability, etc.) which have been plotted as a function of a specificconfiguration parameter (e.g., number of CPU cores) (X-axis, 1253). Forpurposes of illustration, and ease of explanation, it will be assumedthat the system configuration metric being measured (at the Y-axis) issystem performance.

As illustrated in the example embodiment of FIG. 12, graph 1250 includesa plurality of known data points (and/or known ranges of data), asindicated at 1252, 1254, 1256, and 1262. In this example, it is assumedthat the known data displayed at the graph 1250 has been obtained fromsubscriber system telemetry information collected from a plurality ofdifferent subscriber systems (e.g., deployed at one or more datacenters). For example, in at least one embodiment, at least a portion ofthe subscriber system telemetry information may be collected by multipleinstances of the Subscriber System Monitoring and Reporting Procedure(e.g., FIG. 5), and reported to the DataGrid Analytics Service.

Interpreting the plotted data of FIG. 12, it can be readily be observedthat:

-   -   The range of values of measured system performance for        subscriber system configurations having 0.5 CPU cores is        relatively lower than the ranges of values of measured system        performance for subscriber system configurations having 1, 2, or        8 CPU cores.    -   The range of values of measured system performance for        subscriber system configurations having 2 CPU cores is        relatively higher than the ranges of values of measured system        performance for subscriber system configurations having 0.5, 1,        or 8 CPU cores.

However, as illustrated in the graph of FIG. 12, the ranges of values ofmeasured system performances for subscriber system configurations havingeither 4 CPU cores or 16 CPU cores is unknown. This is because (asassumed in this particular example) there are currently no activesubscriber system configurations which are configured to have either 4CPU cores or 16 CPU cores. In order to help fill in the missing data,the DataGrid Analytics Service may be configured or designed to includefunctionality for facilitating the acquisition of unknown or missingdata points. One example of such functionality is represented by theDataGrid Monte Carlo Sampling Procedure of FIG. 11.

FIG. 11 shows an example of a DataGrid Monte Carlo Sampling Procedure1100 in accordance with a specific embodiment. In at least oneembodiment, at least a portion of the DataGrid Monte Carlo SamplingProcedure may be implemented at one or more DataGrid Servers and/or atother network device(s)/system(s) which have been configured or designedto include functionality for performing DataGrid analytics services. Forpurposes of illustration, it is assumed in the specific exampleembodiment of FIG. 11 that the DataGrid Monte Carlo Sampling Procedure1100 is implemented by the DataGrid Analytics Service.

The DataGrid Monte Carlo Sampling Procedure of FIG. 11 leverages amodified technique of Monte Carlo simulation which has been specificallyadapted for use within the DataGrid and Subscriber networks. Morespecifically, unlike conventional Monte Carlo simulation techniques, theDataGrid Monte Carlo Sampling Procedure does not rely on repeated randomsampling to obtain numerical results, but rather engages in directed andproactive manipulation of different subscriber system configurations forthe purpose of determining and/or acquiring unknown data points (orother desired information which is currently unknown), rather thanpassively waiting for such data points to occur naturally.

For purposes of illustration, the flow diagram of FIG. 11 will bedescribed by way of illustration with reference to the example dataillustrated in the graph 1250 of FIG. 12.

In at least one embodiment, the DataGrid Analytics Service may beconfigured or designed to include functionality for analyzing reportedsubscriber system telemetry information, identifying unknown or missingdata points, and for proactively facilitating the acquisition ofsubscriber system telemetry information relating to unknown/missing datapoints. Accordingly, in this example, it is assumed that the DataGridAnalytics Service initiates the DataGrid Monte Carlo Sampling Procedureto acquire subscriber system telemetry information for subscriber systemconfigurations having 4 CPU cores, and for subscriber systems having 16CPU cores.

As shown at 1102 of FIG. 11, the DataGrid Analytics Service maydetermine the ranges of known configurations and outcomes. For example,referring to the example of FIG. 12, the DataGrid Analytics Service maydetermine the ranges of the following known configuration values andoutcomes:

TABLE 1 Config Value (# CPU Cores) Range of Known Outcomes 0.5 R1-R2 1R3-R4 2 R5-R6 4 ? 8 R7-R8 16 ?

As shown at 1104, the DataGrid Analytics Service may identify gaps indata points or data point ranges (e.g., range of outcomes unknown forconfig value=4; range of outcomes unknown for config value=16),particularly those closest to data points associated with relativelyfavorable outcomes.

As shown at 1106, for each identified missing data point, the DataGridAnalytics Service may identify a different subset of systems amongsubscriber systems with compatible configurations, and push systemconfiguration recommendations to the identified subset of systems tocause each of them to change their respective configurations by usingthe recommended configuration parameter associated with the identifiedmissing data point. In at least one embodiment, it is preferable thatthe subset of systems identified for testing a particular missing datapoint are distributed across large populations and/or distributed acrossmany different subscribers and/or subscriber systems so that no singlesubscriber is significantly and/or adversely affected by the testconfigurations.

For example, referring to the example of FIG. 12, the DataGrid AnalyticsService may:

-   -   Identify a config value of 4 CPU Cores as first missing data        point to be tested using the DataGrid Monte Carlo Sampling        Procedure.    -   Identify a configuration value of 16 CPU Cores as second missing        data point to be tested using the DataGrid Monte Carlo Sampling        Procedure.    -   Identify a first subset of “test” systems among subscriber        systems with compatible configurations, and push a first set of        system configuration recommendations to the first subset of        systems to cause each of them to change their respective        configurations to use exactly 4 CPU cores.    -   Identify a second subset of “test” systems among subscriber        systems with compatible configurations, and push a second set of        system configuration recommendations to the second subset of        systems to cause each of them to change their respective        configurations to use exactly 16 CPU cores.

In at least some embodiments, the act of pushing a set of systemconfiguration recommendations may be performed by the AutomatedContinuous Integration Workflow illustrated in FIG. 9, the AutomatedContinuous Delivery Workflow illustrated in FIG. 10, and/or theSubscriber Recommendation and Conditional Updating Procedure illustratedin FIG. 8.

In at least one embodiment, each of the “test” systems (e.g.,corresponding to the first and second subsets of subscriber systems) mayimplement the recommended configuration changes. Various instances ofthe Subscriber System Monitoring and Reporting Procedure may collecttelemetry information (e.g., telemetry event(s), signal(s), outcomes,etc.) for each of the test subscriber systems, and may report thecollected telemetry information to the DataGrid Analytics Service. Byway of illustration, in the present example, the first subset of “test”subscriber systems may each report their respective telemetryinformation, which may include measured outcomes for various metricsassociated with systems configured to have 4 CPU cores. Similarly, thesecond subset of “test” subscriber systems may each report theirrespective telemetry information, which may include measured outcomesfor various metrics associated with systems configured to have 16 CPUcores.

As shown at 1108, the DataGrid Analytics Service may receive and analyzereported telemetry information corresponding to the first and secondsubsets of “test” systems. The DataGrid Analytics Service may use thereported telemetry information to identify configuration values andmeasured outcomes corresponding to one or more of the missing datapoints, and may use such information to update ranges of knownconfigurations and outcomes. In at least some embodiments, the newlyreceived data points may be automatically and/or dynamically selected bythe DataGrid System to complement the set of known data points, enablingthe DataGrid Analytics Service to identify or determine if the newlyreceived data points provide better or worse outcomes than thepreviously known data points.

As shown at 1110, the DataGrid Analytics Service may analyze the updateranges of known configurations and outcomes to determine if there areany new/additional data point gap(s) (or unknown data points) to betested which may provide improvement. For example, referring to thegraph of FIG. 12, it can be observed from the plotted data that therelatively best measured outcomes are associated with systemconfigurations having 2 CPU cores and 8 CPU cores. Additionally, asillustrated in the example embodiment of FIG. 12, the range of measuredoutcomes associated with system configurations having anywhere from 3CPU cores to 7 CPU cores is unknown. However, in at least oneembodiment, the DataGrid Analytics Service may be configured or designedto include functionality for interpreting the trend of the known datapoints to suggests that improved outcomes may possibly be obtained bysystems configured to have a number of CPU cores within the range of 3-7CPU cores. Accordingly, based on this data, the DataGrid AnalyticsService may automatically and dynamically initiate multiple differentinstances of the DataGrid Monte Carlo Sampling Procedure to test systemconfigurations having a number of CPU cores within the range of 3-7 CPUcores. In at least some embodiments, multiple instances of the DataGridMonte Carlo Sampling Procedure may run concurrently with each other inorder to concurrently test multiple different system configurationsduring a given time period.

In at least some embodiments, the additional data point gap searches maybe “fractal”, for example, by going to finer granularity with eachadditional data point gap searches. For example, testing systemconfigurations with 6 CPU cores, once measured outcomes are known forsystems with 4 CPU cores and 8 CPU cores. Thereafter, testing systemconfigurations with 5 CPU cores, once measured outcomes are known forsystems with 4 CPU cores and 6 CPU cores, etc.

According to different embodiments, the DataGrid Monte Carlo SamplingProcedure may be adapted to test any type of system resource which maybe configured, including, for example, memory resources, CPU resources,interface resources, component resources, package version number (e.g.,release 1, 2, 3, 4, 5), etc. Additionally, in at least some embodiments,the configuration parameter (or value) to be tested may bemultidimensional (e.g., number of CPU cores and memory limit; size ofRAM and package version number; etc.).

FIG. 13 illustrates an example screenshot of a graphical user interface(GUI) 1301 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology.

In at least one embodiment, GUI 1301 may serve as a starting point for auser to search for packages they may be interested in using orevaluating. The search bar 1302 allows the user to enter some or all orpart of a package name. As the package name is entered, or upon the userpressing the Enter key or mouse-clicking on the magnifying glass icon,the system searches the database and displays packages which match theuser query, ordered by popularity (see FIG. 14).

The Explore Tab provides the GUI used for performing package searches(see FIGS. 13-14), picking packages from search results to include in apackage pick list (see FIG. 15), and comparing packages in this list toother versions of these packages which may be used in upgrading ordowngrading from the versions in the first list (see FIG. 16). Inrelation to package changes, the pick list may be considered a list ofsource packages, while the compared-to list may be considered as a listof target packages.

The Validate Upgrade Tab provides a related GUI (see FIG. 22) whichallows a user to indicate, search for, examine, and evaluate detailedinformation related to upgrading or downgrading a particular packagefrom one or more source versions to one or more target versions (seeFIGS. 22-27).

The Detail radio button 1311, if selected, causes the GUI to display adetailed pick list of packages (see FIG. 15). The Compare radio button1313, if selected, causes the GUI to display the pick list in relationto a target list. Packages on the pick list (From list) are shown incomparison to packages on the target list (To list). See FIG. 16. TheLoad Packages icon 1315 allows a user to upload a server configuration(e.g., list of packages) from the user's local computer to be includedin the pick list (see FIG. 19). Before the user has entered a searchquery, this GUI shows some of the most popular searches 1310 made bysome or all users.

As illustrated in the example embodiment of FIG. 13, each entry in thepopular search list is displayed along with related informationincluding, for example: a respective DGRI score, the number of datapoints for this package, etc.

For example, as illustrated in the example embodiment of FIG. 13, onepopular package version is python version 2.7.3-15.e19, which has anassociated DGRI score of 911, and an associated number of data points of23,311.

In at least one embodiment, a respective DGRI score may represent astatistical assessment of the confidence of a particular serverconfiguration, or of a particular package, and, like a credit score, isdynamic and predictive rather than forensic. The DGRI score isprogrammatically calculated from a large, and growing, set of historicaldata crowdsourced from many servers. The determination of a DGRI scoremay also be affected by other data sources such as publically availablepackage vulnerability data, package issue-tracking databases, and testresults published for particular package versions.

In at least one embodiment, a respective number of data points mayrepresent the number of servers known by the DataGrid System to have thepackage installed, currently or historically.

In the specific embodiment of FIG. 13, it is assumed that:

-   -   The user has just loaded this web page and has performed no        other operations.    -   Popular searches are automatically displayed with no query being        entered.    -   The Detail radio button is selected by default.

Some embodiments of the GUI of FIG. 13 may be configured or designed toprovide other types of information, content and/or functionality,including, for example, functionality for loading package lists fromother sources such as from server configurations already present in theDataGrid System which may be related to the user's account.

FIG. 14 illustrates an example screenshot of a graphical user interface(GUI) 1401 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology such as, for example, one or more ofthe following (or combinations thereof):

-   -   Enabling users to search for desired packages by entering some        or all or part of a selected package name in the search box.    -   Enabling user to select a package from among the search results        to include in a package pick list.

In the specific embodiment of FIG. 14, it is assumed that the user hasentered the term “python” in the search bar 1402 to initiate a searchquery for Python packages.

Once the user has entered a package name in the search bar, the DataGridSystem uses the database to determine popular versions and associatedDGRI scores of packages matching the input search terms, and displaythem to the user as a list of search results. Popular versions of thesearch results may be highlighted or prominently displayed.

Selecting the detail button 1411 enables the user to view detailsrelating to one or more selected search results. Selecting the comparebutton 1413 enables the user to view details of one or more selectedsearch results in comparison to other versions (e.g., installed, latestor targeted).

The user may click on particular search result to add it to auser-customizable pick list of packages. This is illustrated, forexample, in FIG. 15. This list of packages may represent a partial, oreven complete, configuration for a server.

Some embodiments of the GUI of FIG. 14 may be configured or designed toprovide other types of information, content and/or functionality, suchas, for example, one or more of the following (or combinations thereof):

-   -   Search results may be ordered by other means than popularity        (number of data points), such as, for example, by package DGRI        score.    -   Search results may be limited to show only package versions        which are compatible with those specific packages already        included in the pick list of packages.

FIG. 15 illustrates an example screenshot of a graphical user interface(GUI) 1501 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology such as, for example, one or more ofthe following (or combinations thereof):

-   -   Enabling users to search for and identify additional packages        (e.g., 1502, 1504) and to selectively add one or more of them to        the user's customized package pick list.    -   Enabling users to remove one or more packages from the package        pick list (e.g., by clicking on the X icon next to the package        in the pick list).

In the specific embodiment of FIG. 15, it is assumed that the user hasalready searched for “python” and “less” packages, and selected from thesearch results one Python package and one less package to include in thepick list. In this specific example, it is assumed that the user hasincluded the following packages in the pick list:

-   -   python version 2.7.7-16.e17    -   less version 459

As illustrated in the example embodiment of FIG. 15, GUI 1501 may beconfigured or designed to display various information related to eachpackage on the pick list such as, for example, one or more of thefollowing (or combinations thereof):

-   -   Package name.    -   Package version information.    -   Package DGRI score.    -   Number of data points for the package.    -   Package vulnerabilities.    -   And/or other information related to each package.

As illustrated in the example embodiment of FIG. 15, GUI 1501 may beconfigured or designed to display various information related to theentire pick list of packages, including, for example Aggregate DGRIscore 1505. In at least one embodiment, this is the DGRI score for theentire pick list as calculated by the DataGrid System.

FIG. 16 illustrates an example screenshot of a graphical user interface(GUI) 1601 which may be configured or designed to serve as an interfacefor a user to evaluate a package pick list as a “From” configuration incomparison to a second list as a “To” configuration which is arrived atby upgrading or downgrading packages in the From list to theircorresponding package in the To list. In some embodiments, thisfunctionality may be used to plan and implement future configurationchanges, e.g., by choosing which packages to upgrade and to whatversions. Additionally, in at least some embodiments, this functionalitymay be used to analyze configuration changes that have already beenperformed.

According to different embodiments, GUI 1601 may include functionalityfor causing the DataGrid System to initiate and/or perform variousoperation(s) and/or action(s) relating to the DataGrid technology suchas, for example, one or more of the following (or combinations thereof):

-   -   Enabling users to search for additional packages and add them to        the From list.    -   Enabling users to remove one or more packages from the From list        (e.g., by clicking on the X icon next to a row in the package        table). This also removes any corresponding To list package        entry.    -   Enabling users to add, remove or change one or more packages in        the To list (e.g., by clicking on a + icon in the To list).        (See, e.g., FIG. 17)    -   Enabling user to switch the positions of a pair of From and To        packages (e.g., by clicking on the two-headed arrow icon).

In the specific embodiment of FIG. 16, it is assumed that:

-   -   The user has included three packages in the package pick list        (python 1602, less 1604, and Java JDK 1608).    -   The user has clicked on the Compare radio button 1605 to cause        the GUI to display the pick list as a From list, along with an        associated To list.    -   The user has included three packages in the To list.

As illustrated in the example embodiment of FIG. 16, GUI 1601 may beconfigured or designed to display various information related to eachpackage on the From or To list such as, for example, one or more of thefollowing (or combinations thereof):

-   -   package name    -   package version information    -   package DGRI Score    -   number of data points for the package    -   package vulnerabilities    -   etc.

As illustrated in the example embodiment of FIG. 16, GUI 1601 may beconfigured or designed to display various information related to theeach of the From and To lists, including for example: Aggregate DGRIscores (e.g., 1611, 1613). In at least one embodiment, the aggregateDGRI score for a given list (e.g., To list, From list) may be calculatedby the DataGrid System based on the entire list of packages included inthat particular list.

As illustrated in the example embodiment of FIG. 16, GUI 1601 may beconfigured or designed to display various information related to theeach pair of packages on the From and To lists such as, for example, oneor more of the following (or combinations thereof):

-   -   A percent chance of success in performing the upgrade or        downgrade from the From package to the To package.    -   The number of data points known by the DataGrid System for the        package change operation (e.g., the number of times such an        upgrade or downgrade has occurred historically).

As illustrated in the example embodiment of FIG. 16, GUI 1601 may beconfigured or designed to display various information related to thechance of success of performing some or all the package changeoperations including, for example, A percent chance of success (e.g.,1615) in performing some or all the upgrade or downgrade operations fromthe From list to the To list.

Some embodiments of the GUI of FIG. 16 may be configured or designed toprovide other types of information, content and/or functionality, suchas, for example, functionality for downloading and executing, using theGUI a script of instructions for a command line package managementutility such as yum, which may be configured or designed to perform thepackage change operations indicated in the relation between the From andTo lists of packages.

FIG. 17 illustrates an example screenshot of a graphical user interface(GUI) 1701 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology including, for example, enablingusers to explore and specify changing a package from one version toanother using a rich set of data displayed to the user which indicatesthe possible changes which may be made by package major version, minorversion, bugfix version and release number. In some embodiments, the GUI1701 may present these possible changes in a tree-form, where, forexample, selecting a major version for the target package causes to GUIto change the display of minor versions to include exactly those whichare available with the major version, and, likewise, selecting a minorversion causes the GUI to change the display of bugfix versions toinclude exactly those which are available with the minor version, etc.

In the specific embodiment of FIG. 17, it is assumed that:

-   -   The user has previously selected a particular package to change,        and initiated the change operation, causing GUI 1701 to be        displayed by the DataGrid System. In the example of FIG. 17 the        package which has been selected to change is python        2.7.1-16.el7.    -   The user has previously selected the major version of the target        package (Python 2, as selected in the left column), then the        minor version of the target package (Python 2.7, as selected in        the next column), then the bugfix version (Python 2.7.3 as        indicated by the radio button selection in the next column).

As illustrated in the example embodiment of FIG. 17, GUI 1701 may beconfigured or designed to display various information related to eachpartial or complete package version specification such as, for example,one or more of the following (or combinations thereof):

-   -   Package name.    -   Package version information.    -   Package DGRI Score.    -   Number of data points for the package.    -   Etc.

In at least one embodiment, the DataGrid System calculates and providesDGRI scores, as well as the number of data points, not only for acompletely specified package version, but for each of the successivelymore specific components of the complete version information.

Some embodiments of the GUI of FIG. 17 may be configured or designed toprovide other types of information, content and/or functionality. Forexample, in at least one embodiment, each (or selected) component(s) ofa package version specification may be display a range of package DGRIscores for some or all packages included in less significant components.For example, the major version may display a range of 400-810,indicating that amongst some or all packages of this major version,package DGRI scores range from a minimum value (e.g., 400) to a maximumvalue (e.g., 810).

FIG. 18 illustrates an example screenshot of a graphical user interface(GUI) 1801 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology including, for example, enablingusers to explore and specify changing a package from one version toanother by independently indicating changes (e.g., via increase/decreaseadjustment arrows 1802, 1804) to one or more of the following (orcombinations thereof):

-   -   The package major version (e.g., 1811),    -   The package minor version (e.g., 1813),    -   The package bugfix version 1815,    -   And/or the package release number 1817.

In at least one embodiment, the GUI 1801 may be configured to presentthese possible changes in the form of a package name and versionspecification, where, for example, selecting a component of the versionspecification causes up and down arrows to be displayed. The user mayclick on arrows 1802, 1804 to increment and/or decrement the selectedversion specifier, causing the GUI to change the display of associatedDGRI scores and data points for the new version specifier. For example,in FIG. 18, python version 2 has a DGRI score of 849, version 2.3 ascore of 849, version 2.3.7 a score of 779 and version 2.3.7-16.el7 ascore of 889.

In the specific embodiment of FIG. 18, it is assumed that the user haspreviously selected a particular package to change, and initiated thechange operation, causing this GUI (FIG. 18) to be displayed by theDataGrid System. In the example of FIG. 18 the package which has beenselected to change is Python, and the current expression of the selectedversioning is 2.3.7-16.el7.

As illustrated in the example embodiment of FIG. 18, GUI 1801 may beconfigured or designed to display various information (e.g., 1820)related to each component of a package version specification (e.g.,major version, minor version, bugfix version, and release number) inrelation to preceding (or including) components. For example, one ormore of the following (or combinations thereof) may be displayed:

-   -   Version component DGRI Score;    -   Number of data points for the version component;    -   Etc.

In at least some embodiments, the DataGrid System may be configured ordesigned to include functionality for calculating and providing DGRIscores, as well as the number of data points, for each of thesuccessively more complete specification of the complete versioninformation.

Some embodiments of the GUI of FIG. 18 may be configured or designed toprovide other types of information, content and/or functionality, suchas, for example: each (or selected) component(s) of a package versionspecification may be display a range of package DGRI scores for some orall packages included in less significant components. For example, themajor version may display a range of 400-810, indicating that amongstsome or all packages of this major version, package DGRI scores rangefrom a minimum of 400 to a maximum of 810.

FIG. 19 illustrates an example screenshot of a graphical user interface(GUI) 1901 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology such as, for example, one or more ofthe following (or combinations thereof):

-   -   Upload (1912) one or more system descriptor file(s). In at least        one embodiment, a system description file may include a list of        packages installed on a server which together are termed a        server configuration.    -   Display a list of recommended upgrades to the server        configuration (e.g., 1934)    -   Specify requirements for upgrades (e.g., 1936) In the specific        embodiment of FIG. 19, it is assumed that the user has        previously chosen to upload a system description file and, using        the GUI of FIG. 19, has selected such a file from the user's        local computer, and uploaded the file to the DataGrid System.

As illustrated in the example embodiment of FIG. 19, GUI 1901 may beconfigured or designed to:

-   -   Display real-time status information (e.g., 1920, 1930) relating        to the uploading and processing of the system description file.    -   Display various information 1932 relating to the uploaded system        description file such as, for example, one or more of the        following (or combinations thereof):        -   Operating system name        -   Operating system version        -   Number of packages in the server configuration        -   DGRI score of the server configuration        -   Etc.

FIG. 20 illustrates an example screenshot of a graphical user interface(GUI) 2001 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology such as, for example, one or more ofthe following (or combinations thereof):

-   -   Specify specific packages (e.g., 2002, 2004) which are to be        required in the upgrade of a server configuration by entering        the package names and version information using the GUI of FIG.        20.    -   Specify specific packages which are to be required in the        upgrade of a server configuration by uploading (2012) one or        more file(s) describing these requirements.    -   Analyze the risk of making the required package upgrades to the        server configuration.

For example, in one embodiment, the DataGrid System creates a targetserver configuration based on the configuration to be upgraded and theupgrade requirements, analyzes this configuration, and displays the DGRIscore of the target configuration and other information such as thenumber of data points and configuration vulnerabilities. In the specificembodiment of FIG. 20, it is assumed that the user has previously chosento specify upgrade requirements for a server configuration (e.g., byclicking on the Specify Upgrade Requirements button 1936 of FIG. 19).

FIG. 21 illustrates an example screenshot of a graphical user interface(GUI) 2101 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology including, for example, displaying alist of recommended package upgrades to a server configuration. In thespecific embodiment of FIG. 21, it is assumed that the user haspreviously chosen to view recommended upgrades for a serverconfiguration (e.g., by clicking on the Show Upgrade Recommendationsbutton 1934 of FIG. 19).

As illustrated in the example embodiment of FIG. 21, GUI 2101 may beconfigured or designed to display various information 2120 related toeach package (e.g., 2122, 2124, 2126) of the recommended packagesupgrades such as, for example, one or more of the following (orcombinations thereof):

-   -   Package name 2121    -   Version 2123    -   Release 2125    -   Architecture 2127    -   Recommended target version 2129    -   The reliability of the upgraded package 2131 (e.g., which may be        calculated by the DataGrid System and expressed as a percent)    -   The number of data points for the target package 2133    -   Etc.

As illustrated in the example embodiment of FIG. 21, GUI 2101 may beconfigured or designed to display various information related to theaggregate of some or all upgrades such as, for example, one or more ofthe following (or combinations thereof):

-   -   The current system configuration DGRI score 2110    -   The estimated system DGRI score after the upgrade to 2134    -   The reliability estimate of some or all upgrades together 2132    -   Etc.

In at least one embodiment, the reliability estimate may be based on theprobability of all package upgrades being successful, and may becalculated based on the probability of each package upgrade to besuccessful (as may be recorded by telemetry data received from variouscustomer servers making these and/or similar version changes).

FIG. 22 illustrates an example screenshot of a graphical user interface(GUI) 2202 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology including, for example, enabling auser indicate, search for, examine, and/or evaluate detailed informationrelated to upgrading or downgrading a particular package from one ormore source versions to one or more target versions (e.g., asillustrated in the example screenshots of FIGS. 22-27).

In the specific embodiment of FIG. 22, it is assumed that the user haspreviously entered “python 2.7” in the search bar, with the “upgradefrom tab” 2202 selected (indicated by the angular projection). TheDataGrid System searches for, selects, and displays the “latest” and“recommended” target versions based on the input which includes thepackage name, major version and minor version. In this case the targetversion may be an upgrade from some or all 2.7.* versions of python. Inat least some embodiments, the “latest version” is the latest releasedstable version whenever the target version has not been limited by auser specification, and the “recommended version” is the versionrecommended by the DataGrid System as having the highest probability ofa reliable result (e.g., the highest DGRI score).

As illustrated in the example embodiment of FIG. 22, GUI 2201 may beconfigured or designed to display various information related to thesource package such as, for example, one or more of the following (orcombinations thereof): package name, major version, minor version,bugfix version, release or build version, and architecture.

Additionally, as illustrated in the example embodiment of FIG. 22, GUI2201 may be configured or designed to display various informationrelated to the latest or recommended target packages such as, forexample, one or more of the following (or combinations thereof): packagename (e.g., same as source), major version, minor version, thedynamically estimated reliability of the target package calculated bythe DataGrid System (e.g., expressed as a percentage), and the number ofdata points for the target package. In some embodiments, the predictedor estimated reliability of the upgrade process, from the currentlyinstalled version to the target version, may also be displayed (e.g., aspercentage).

In some embodiments, GUI 2201 may be configured or designed to includefunctionality (e.g., 2230) for enabling the user to drill down throughvariations of the un-fixed portions of the source package specificationto show details of other matching source versions. For example, in FIG.22, the source version is specified as “2.7.*” so that theminor/incremental versions may be drilled down to display wildcardmatches. In this example, the source package release and architecturespecifications are also not fixed and may be drilled down (e.g., byusing the GUIs of FIGS. 17 and 18).

Some embodiments of the GUI of FIG. 22 may be configured or designed toprovide other types of information, content and/or functionality. Forexample, in at least one embodiment, GUI 2201 may be configured ordesigned to be accessed from a preceding interface in which the sourcepackage version or the target package version, or both, have beenspecified. This specification may be partial, for example, just apackage name, or a package name and major version. In this case theDataGrid System populates the GUI with the specified information when itinitially loads. For example, the user may have navigated to this GUIfrom the GUI of FIG. 16 in order to validate or complete thespecification of a particular package upgrade.

FIG. 23 illustrates an example screenshot of a graphical user interface(GUI) 2301 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology including, for example, enabling auser indicate, search for, examine, and evaluate detailed informationrelated to upgrading or downgrading a particular package from one ormore source versions to one or more target versions.

In the specific embodiment of FIG. 23, it is assumed that the user haspreviously entered “python 2.7.5 x86_64” in the search bar, with the“upgrade from tab” 2302 selected.

In at least some embodiments, the DataGrid System searches for, selects,and displays a “latest” target version 2312 and a “recommended” targetversion 2314, based on the input which includes the package name, majorversion, minor version and architecture. In this case the target versionmust be an upgrade from some or all 2.7.5 versions of python which usethe x86_64 architecture.

In at least some embodiments, GUI 2301 may be configured or designed toinclude functionality for enabling the user to drill down (2330) throughvariations of the un-fixed portions of the source package specificationto show details of other matching source versions. For example, in FIG.23, the source version is specified as 2.7.5 and the architecture asx86_64, so only the release number may be drilled down to displaydifferent releases which match the source package specification.

In at least some embodiments, GUI 2301 may be configured or designed toinclude functionality for enabling the user to expand (2332) the scopeof fixed portions of the source package specification to show details ofother matching source versions if this fixed portion were not fixed. Forexample, in FIG. 23, the source version is specified as 2.7.5 so thefixed minor and incremental versions may be expanded in scope to showother minor or incremental versions outside the scope of the usersearch. Also, the architecture is fixed as x86_64, so its fixed scopemay be expanded to show other packages which match the search (e.g.,except for the specified architecture). In the example of FIG. 23, thereare no results for this expansion, so the GUI 2301 displays “no majordifference” rather than the number of matches in the expanded scope(which is none).

FIG. 24 illustrates an example screenshot of a graphical user interface(GUI) 2401 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology including, for example, enabling auser indicate, search for, examine, and evaluate detailed informationrelated to upgrading or downgrading a particular package from one ormore source versions to one or more target versions.

In the specific embodiment of FIG. 24, it is assumed that the user haspreviously entered “python 2.7.5. 16.el7 x86_64” in the search bar, withthe “upgrade from tab” 2402 selected. The DataGrid System searches for,selects, and displays the “latest” and “recommended” target versions(e.g., 2412, 2414), based on the input which, for example, includes thepackage name, major version, minor version, bugfix version, release andarchitecture. In this case the target version must be an upgrade fromsome or all 2.7.5-16.el7 versions of python which use the x86_64architecture.

In at least some embodiments, GUI 2401 may be configured or designed toinclude functionality for enabling a user to drill down on a selectedpackage to view additional details about that package and/or to expandthe scope of the selected package (e.g., by displaying additionalinformation relating to different minor/incremental versions, differentreleases, different architectures, etc.).

FIG. 25 illustrates an example screenshot of a graphical user interface(GUI) 2501 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology including, for example, enabling auser indicate, search for, examine, and evaluate detailed informationrelated to upgrading or downgrading a particular package from one ormore source versions to one or more target versions.

In the specific embodiment of FIG. 25, it is assumed that the user haspreviously fully specified the source package as “python 2.6.5 16.el7x86_64”, and then clicked to select the “upgrade to” tab 2504 (e.g.,indicated by the angular projection). To specify the target package, theuser has entered “python 2.7” in the search bar. The DataGrid Systemsearches for, selects, and displays the “latest” and “recommended”target versions (2512, 2514) based on the full source packagespecification and the incomplete target package specification whichincludes the package name, major version and minor version. In this casethe target version must be an upgrade from some or all 2.6.5 16.el7x86_64 versions of python and must also have a major.minor versionspecification of 2.7.

In at least some embodiments, GUI 2501 may be configured or designed toinclude functionality for enabling a user to drill down on a selectedpackage to view additional details about that package and/or to expandthe scope of the selected package (e.g., by displaying additionalinformation relating to different minor/incremental versions, differentreleases, different architectures, etc.).

FIG. 26 illustrates an example screenshot of a graphical user interface(GUI) 2601 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology including, for example, enabling auser to perform an advanced search for source and/or target packages(2601) which match a specified set of package specifiers (e.g., 2620,2630, 2640). For example, in the specific embodiment of FIG. 26, it isassumed that the user has selected a source package query for x86_64packages using the radio buttons. In one embodiment, the user may enterappropriate source package specifiers in the “package” name box 2602,“package version” box 2604 and/or “package release” box 2606 to qualifyand/or filter search results. In at least some embodiments, the DataGridSystem may be configured or designed to accept partially entered searchcriteria, and to use the partial search criteria to autosuggest and/orautocomplete selected search criteria matching the partial searchcriteria.

FIG. 27 illustrates an example screenshot of a graphical user interface(GUI) 2701 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology including, for example, serving as astarting point for a user to search for packages they may be interestedin upgrading, using and/or evaluating. The search bar 2702 allows theuser to enter a package name and some or all or part or none of thepackage version specification. The system searches the database anddisplays a customized list of packages 2710 that match the user query,and their upgrades to latest version.

In the specific embodiment of FIG. 27, it is assumed that:

-   -   User has selected the Validate tab 2703.    -   The user has entered “python 2.7” in the search bar.

As illustrated in the example embodiment of FIG. 27, GUI 2701 may beconfigured or designed to display various information related to eachupgrade such as, for example, one or more of the following (orcombinations thereof):

-   -   The DGRI score of the target package version 2711.    -   The probability of a successful upgrade 2713 (or unsuccessful        upgrade) from the source package to the target latest package.    -   Indications 2715 of whether or not the probability of success        (or failure) meets a user defined threshold.    -   The number of data points 2717 used in calculating the        probability of success in upgrading from source to target.    -   Etc.

FIG. 28 illustrates an example screenshot of a graphical user interface(GUI) 2801 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology including, for example, serving as astarting point for a user to search for packages they may be interestedin upgrading, using and/or evaluating. The search bar 2802 enables theuser to enter a package name and some or all or part or none of thepackage version specification. The system searches the currentconfigurations of Subscriber Systems and finds some or all systems whichinclude a package matching the search term, and groups these searchresults 2810 by differences in major, minor and/or incremental versions.

In the specific embodiment of FIG. 28, it is assumed that:

-   -   The user has entered “python 2.7” in the search bar 2802.    -   User has selected the Inventory tab 2805.

As illustrated in the example embodiment of FIG. 28, GUI 2801 may beconfigured or designed to display various information related to eachgrouped search result such as, for example, one or more of the following(or combinations thereof):

-   -   The package name and version.    -   The number of subscriber systems which use this package version        (e.g., number of servers on which that exact package version is        installed).    -   The reliability of the upgraded package calculated by the        DataGrid System (e.g., expressed as a percentage).    -   The predicted probability of a successful upgrade from the        source package to the target latest package (e.g., as calculated        or determined by the DataGrid System).    -   An indication of whether or not the probability of success meets        a user defined threshold.    -   The number of data points used in calculating the probability of        success in upgrading from source to target.    -   Etc.

FIG. 29 illustrates an example screenshot of a graphical user interface(GUI) 2901 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology such as, for example, one or more ofthe following (or combinations thereof):

-   -   Serve as a starting point for a user to investigate, determine        or perform server configuration changes over collections of        subscriber servers whose configuration changes are being managed        using the DataGrid System, and which participate in sending        crowdsourced server data to the DataGrid System. For example, in        one embodiment, the DataGrid System uses an API exposed by a        configuration management system, for example the Chef Server        REST API, to remotely execute server configuration changes on        subscriber servers. The list of server scopes (e.g., Web        Servers, or servers in Oregon), and their hierarchy, may be        configured in the DataGrid System (e.g., by a user using a GUI,        CLI or API interface), or may be imported in as a near real time        representation already present in configuration automation tools        such as Chef, or may be obtained from other APIs such as the        Amazon Web Services EC2 API where such a representation may be        extracted, for example, from EC2 instance tags.    -   Determine the scope of servers to be investigated or changed by        server role or location. This may be done using either a        tree-form menu or search queries to limit the scope.    -   Show configuration change recommendation 2911 to the scoped        servers which are recommended by the DataGrid System.    -   Etc.

In the specific embodiment of FIG. 29, it is assumed that the user hasused the tree-form menu checkboxes to select Florida 2903, 2913 andIreland 2905, 2915 as the selected geographical scopes of the servers tobe managed. In at least one embodiment, the tree view presents multipledifferent selection criteria, for example: region, application, serverrole, etc. In some embodiments, the user can also select all servers.

FIG. 30 illustrates an example screenshot of a graphical user interface(GUI) 3001 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology such as, for example, one or more ofthe following (or combinations thereof):

-   -   Investigate, determine or perform server configuration changes        over collections of servers (e.g., 3010). The scope of the        change set being investigated is displayed as a breadcrumb along        the top of FIG. 30, where in the example we are including some        or all servers from the Florida and Ireland geographic regions        and showing that 95 servers are selected.    -   Select groups of servers within the scope to include or exclude        in making any changes by server role, e.g., using the checkboxes        to the left of the Groups column, next to each group of servers.    -   Drill down in the scope to examine or modify the recommended        changes for a particular group of servers by role.    -   The Download Changes button 3003 downloads scripts of        instructions for a command line package management utility such        as yum (or Chef configuration recipes) which may be executed on        servers belonging to different roles to perform the recommended        changes for that server, including any modifications to these        changes determined by the user using this GUI.    -   The Execute Changes button 3005 remotely executes the        recommended and user determined changes on the selected servers        by role using the API of a package management system such as        Ansible or Chef.    -   Etc.

In the specific embodiment of FIG. 30, it is assumed that the user haspreviously selected the geographic scope of Florida and Ireland (e.g.,using the GUI of FIG. 29).

As illustrated in the example embodiment of FIG. 30, GUI 3001 may beconfigured or designed to display various information related to eachserver group by role such as, for example, one or more of the following(or combinations thereof):

-   -   The name of the group by role (e.g., App Servers) 3011.    -   The number of subscriber servers from the selected scope        belonging to the role (e.g., 19 for the App Servers group).    -   The DGRI score calculated for the server group (“DGRI From”        3013). Servers grouped by function (role) may share similar        configurations in the DataGrid System, which calculates a DGRI        score for each group of such servers.    -   The DGRI score estimated for the server group after the        recommended and user determined configuration changes have been        made (“DGRI To” 3015).    -   The number of packages which may be changed on each server in        the server group 3017.    -   The names of the packages which may be changed on each server        group.    -   Etc.

In some embodiments, GUI 3001 may be configured or designed to includefunctionality for enabling the user to selectively drill down to viewdifferent set(s) of changes 3017 for a particular server group, e.g., bypressing on a magnifying glass button 3019. In at least one embodiment,the user may also modify the proposed changes, for example, by includingor excluding packages, and/or by selecting different versions (e.g., asshown in FIG. 31).

FIG. 31 illustrates an example screenshot of a graphical user interface(GUI) 3101 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology such as, for example, one or more ofthe following (or combinations thereof):

-   -   Investigate or modify the recommended changes for a server group        by role. The scope of the change set being investigated may be        displayed as a breadcrumbs 3113, which in this example includes        some or all servers from the Florida and Ireland geographic        regions which are also App Servers.    -   Include or exclude packages in the change set for servers within        the current scope using the checkboxes to the left of the table.    -   Search for new packages to add to the change set using the        search bar.    -   The Save button saves user changes made on this GUI to the        change set while the Discard button discards such changes.

In the specific embodiment of FIG. 31, it is assumed that the user haspreviously selected the geographic scope of Florida and Ireland and therole of App Servers (e.g., using the GUIs of FIGS. 29 and 30).

As illustrated in the example embodiment of FIG. 31, GUI 3101 may beconfigured or designed to display various information 3110 related toeach source and target package in the change set for the server groupsuch as, for example, one or more of the following (or combinationsthereof):

-   -   The package name and version.    -   A rating (e.g., star rating) for the package representing the        package DGRI score.    -   The numeric package DGRI score.    -   The number of package data points (e.g., the number of servers        known by the DataGrid System to use, or to have used, this        specific package; e.g., as may be used to make the calculation        of success probability).    -   The predicted or estimated probability of a successful change        from each package from the source version to the target version.    -   Etc.

As illustrated in the example embodiment of FIG. 31, GUI 3101 may befurther configured or designed to display various information 3110related to the aggregate of the source packages or the aggregate of thetarget packages in the change set such as, for example, one or more ofthe following (or combinations thereof):

-   -   A star rating representing the average configuration DGRI score        for servers in the change set before the changes have been made        (source) or after such changes have been made (target).    -   The DGRI score for servers in the change set before the changes        have been made (source) or after such changes have been made        (target).    -   Etc.

FIG. 32 shows an alternate embodiment of FIG. 31 where the targetpackage is displayed as a user selectable list of more than one targetpackage, selectable by radio button. One purpose of displaying multipletarget packages is to provide recommendations for different versionbranches. For example, as illustrated in the example embodiment of FIG.32, the user is provided with several different recommended upgradeoptions (e.g., 3202, 3204) for the identified openssl package version1.0.2-1.el7 (3202), namely openssl 1.0.2a-1.el7 and openssl 1.0.3-1.el7incremental branches. Similarly, for example with Python, GUI 3201 maydisplay recommended packages from different major version branches,e.g., 2.x and 3.x. The user choice between or among branches may be madebased not only on reliability assessments provided by the DataGridSystem, but also on functionality or other criteria unknown to theDataGrid System.

FIG. 33 illustrates an example screenshot of a graphical user interface(GUI) 3301 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology such as, for example, one or more ofthe following (or combinations thereof):

-   -   Show details (e.g., 3310) related to one or more selected        package(s) in the change set.    -   Optionally show additional details (“Click for Details” 3311).

In the specific embodiment of FIG. 33, it is assumed that the user haspreviously moved the mouse so that it is over the magnifying glass iconas shown in FIG. 33, causing the detail balloon 3110 to appear.

As illustrated in the example embodiment of FIG. 33, GUI 3301 may beconfigured or designed to display various information related to apackage in the change set such as, for example, one or more of thefollowing (or combinations thereof):

-   -   The package DGRI score.    -   Details of the package DGRI score broken down by Security,        Performance and Reliability, each displayed with a separate        score.    -   The number of data points by type related to this package,        including the number of servers known by the DataGrid System to        use, or to have used, this specific package, and the number of        signals received from such servers.    -   The number of vulnerabilities for the package.    -   Etc.

FIG. 34 illustrates an example screenshot of a graphical user interface(GUI) 3401 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology such as, for example, one or more ofthe following (or combinations thereof):

-   -   Show additional details for a selected package in the change        set.    -   Show additional vulnerability details for a package in the        change set (e.g., by clicking on the See Details 3414 link of        the Vulnerabilities section)

In the specific embodiment of FIG. 34, it is assumed that the user haspreviously selected the “Click for Details” link 3311 from the detailballoon of FIG. 33.

As illustrated in the example embodiment of FIG. 34, GUI 3401 may beconfigured or designed to display various information 3410 related toadditional details of a package in the change set such as, for example,one or more of the following (or combinations thereof):

-   -   Score details 3412 for various package metrics.    -   Vulnerability information 3414.    -   Data Point information 3416.    -   Statistics information 3418, including, for example, the average        mean time between failures (MTBF) for some or all servers known        by the DataGrid System to include the specific package.    -   Signal/Telemetry information 3420, including, for example,        number of occurrences of different signal types (e.g., errors,        reboots, crashes, downgrades, success, failure, etc.) for some        or all servers known by the DataGrid System to include the        specific package.

FIG. 35 illustrates an example screenshot of a graphical user interface(GUI) 3501 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology including, for example, showingvulnerability details for a selected package in the change set.

In the specific embodiment of FIG. 35, it is assumed that the user haspreviously selected the “See Details” link 3414 of FIG. 34.

As illustrated in the example embodiment of FIG. 35, GUI 3501 may beconfigured or designed to display various information related to eachvulnerability of a package in the change set such as, for example, oneor more of the following (or combinations thereof):

-   -   The vulnerability Common Vulnerabilities and Exploits (CVE)        identifier (e.g., 3522).    -   The vulnerability Common Vulnerability Scoring System (CVSS)        severity score (e.g., 3526).    -   The vulnerability reported date (e.g., 3524).    -   A description of the vulnerability (e.g., 3528).    -   Any of other CVSS metrics such as access-vector, access        complexity, authentication, confidentiality-impact,        integrity-impact and availability-impact.    -   Etc.

FIG. 36 illustrates an example screenshot of a graphical user interface(GUI) 3601 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology such as, for example, one or more ofthe following (or combinations thereof):

-   -   Show recommended versions (e.g., 3612) for a package in the        change set.    -   Select a package with a specific version from the list of        recommended versions    -   Optionally show more package version options (“More Options”        3616) to expand the list of recommended versions.    -   Search functionality (e.g., 3613), if selected, causes the GUI        to display an interface which may be used to search for packages        (e.g., see FIG. 37).    -   Version History functionality (e.g., 3615), if selected, causes        the GUI to display an interface which may be used to examine the        history of versions of this package used by servers within the        scope (see FIG. 40).    -   Uninstall functionality (e.g., 3617), if selected, causes the        GUI to display an interface which may be used to cause the        package to be uninstalled as part of the package change set for        servers within the scope (see FIG. 41).

In the specific embodiment of FIG. 36, it is assumed that:

-   -   The user has clicked on the pencil icon 3619 as shown in FIG.        36, causing the balloon 3610 to appear.    -   The user has clicked on the Recommended Tab 3611.

As illustrated in the example embodiment of FIG. 36, GUI 3601 may beconfigured or designed to display various information related to eachpackage in the list of recommended versions such as, for example, one ormore of the following (or combinations thereof):

-   -   The package name.    -   The package version.    -   The package DGRI score.    -   The number of data points for the package (e.g., the number of        servers known by the DataGrid System to use, or to have used,        this specific package).    -   Etc.

In at least one embodiment, the GUI 3601 may be configured or designedto include functionality for enabling a user to modify the selectedtarget version(s) of specific package(s) (and/or to uninstall one ormore specific package(s)). As illustrated in the example embodiment ofFIG. 36, the balloon 3610 offers multiple options for choosing a targetversion, e.g., by recommendations, by searching through availableversions, and/or by looking at history of previously installed versions.

FIG. 37 illustrates an example screenshot of a graphical user interface(GUI) 3701 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology such as, for example, one or more ofthe following (or combinations thereof):

-   -   Search for versions of a package to include in the package        change set. The search bar 3702 allows the user to enter some or        all or part of a package name. As the package name is entered,        or upon the user pressing the Enter key or mouse-clicking on the        magnifying glass icon, the system searches the database and        displays packages which match the user query, ordered by        popularity.    -   Select a specific package from search results 3710 to include in        the package change set.    -   Etc.

In the specific embodiment of FIG. 37, it is assumed that:

-   -   The user has clicked on the pencil icon as shown in FIG. 36,        causing the balloon to appear, and then clicked on the Search        tab 3713 shown in the GUI 3701.    -   GUI 3701 may be configured or designed to show some of the        popular package versions (e.g., 3710) used by some or all        Subscriber System(s).

As illustrated in the example embodiment of FIG. 37, each entry in thepopular packages list is displayed along with related informationincluding, for example: a respective DGRI score, the number of datapoints for this package, etc. For example, as illustrated in the exampleembodiment of FIG. 37, one popular package version is oracle version2.07-1.el6, which has an associated DGRI score of 935, and an associatednumber of data points of 18,317.

FIG. 38 illustrates an example screenshot of a graphical user interface(GUI) 3801 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology such as, for example, one or more ofthe following (or combinations thereof):

-   -   Search for desired packages by entering some or all or part of a        selected package name in the search box 3802.    -   Select a package from among the search results 3810 to include        in the package change set.    -   Display a tree-form menu (e.g., by select “More Options” 3812)        which may be used to select a specific package among its        available versions (see, e.g., FIG. 39).

In the specific embodiment of FIG. 38, it is assumed that:

-   -   The user has entered the term “oracle 2.0.6” in the search bar        3802 to initiate a search query for Oracle packages version        2.0.6.    -   Once the user has entered a package name in the search bar, the        DataGrid System may use the database to determine popular        versions and associated DGRI scores of packages matching the        input search terms, and display them to the user as a list of        search results (e.g., 3810).    -   The user may click on particular search result to add it to the        package change set.

As illustrated in the example embodiment of FIG. 38, GUI 3801 may beconfigured or designed to display various information related to eachpackage in the search results such as, for example, one or more of thefollowing (or combinations thereof):

-   -   The package name.    -   The package version.    -   The package DGRI score.    -   The number of data points for the package (e.g., the number of        servers known by the DataGrid System to use, or to have used,        this specific package).    -   Etc.

FIG. 39 illustrates an example screenshot of a graphical user interface(GUI) 3901 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology such as, for example, one or more ofthe following (or combinations thereof):

-   -   Select a specific package (e.g., 3910, 3912, etc.) to include in        the package change set from a tree-form menu including the        search results and the expanded scope of the search results        which includes some or all other versions of the same package.    -   Select a specific package using “Add as Alternative” 3903 to        include as an alternative in the package change set. The user        may elect to do this, for example, in order to consider packages        from two different versions branches. See FIG. 32 for an example        of the result of such an alternative inclusion.

In the specific embodiment of FIG. 39, it is assumed that the user hasentered the term “oracle 2.0.6” in the search bar 3802 of FIG. 38 toinitiate a search query for Oracle packages, and then selected “MoreOptions” 3812, causing the GUI of FIG. 39 to be displayed.

As illustrated in the example embodiment of FIG. 39, GUI 3901 may beconfigured or designed to display various information related to eachpackage in the tree-form menu such as, for example, one or more of thefollowing (or combinations thereof):

-   -   The package name.    -   The package version.    -   The package DGRI score.    -   The number of data points for the package (e.g., the number of        servers known by the DataGrid System to use, or to have used,        this specific package).    -   Etc.

As illustrated in the example embodiment of FIG. 39, GUI 3901 may beconfigured or designed to display various information related to eachbranch of the tree-form menu which has associated therewith one or morepackage versions depending from this branch such as, for example, one ormore of the following (or combinations thereof):

-   -   The package name.    -   A partial specification of the package version associated to the        branch.    -   A range of package DGRI scores for some or all packages        depending from the branch.    -   The aggregate number of data points for some or all packages        depending from the branch (e.g., the number of servers known by        the DataGrid System to use, or to have used, these specific        packages).    -   Etc.

In at least once embodiment, once the user has selected the desiredtarget package version (e.g., 3910), the resulting proposed change maybe displayed (e.g., as shown at 3920), showing the current version (aswell as score(s), data points, etc.) and the target version (as well asscore(s), data points, etc.).

FIG. 40 illustrates an example screenshot of a graphical user interface(GUI) 4001 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology including, for example, displayingthe history of versions of a package used by servers within the scope.

In the specific embodiment of FIG. 40, it is assumed that:

-   -   The user has selected “History” tab (4015), causing the GUI of        FIG. 40 to be displayed.

As illustrated in the example embodiment of FIG. 40, GUI 4001 may beconfigured or designed to display various information 4010 related toeach package in the history results such as, for example, one or more ofthe following (or combinations thereof):

-   -   The package name.    -   The package version.    -   The package DGRI score.    -   The number of data points for the package (e.g., the number of        servers known by the DataGrid System to use, or to have used,        this specific package).    -   The span of time during which the package was installed on one        or more servers within the scope.    -   Etc.

FIG. 41 illustrates an example screenshot of a graphical user interface(GUI) 4101 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology including, for example, causing apackage to be uninstalled as part of the change set relating to serverswithin the scope. In one embodiment, selecting the Uninstall button 4102marks the package for uninstallation. In the specific embodiment of FIG.41, it is assumed that the user has selected “Uninstall” tab 4117,causing the GUI of FIG. 41 to be displayed.

FIG. 42 illustrates an example screenshot of a graphical user interface(GUI) 4201 which may include functionality for causing the DataGridSystem to initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology such as, for example, one or more ofthe following (or combinations thereof):

-   -   Serve as a starting point for a user to manage servers,        including changes to their package configurations, using server        groups which are automatically created based on similar or        identical characteristics (e.g., hardware, CPU type, disk type,        amount of memory, location, role, application, etc.).    -   Group servers automatically according to similar or identical        characteristics (e.g., hardware type and resources).

In the specific embodiment of FIG. 42, it is assumed that the user hasused the search bar 4202, and/or the text boxes, sliders and drop-downmenus 4210, to define and/or specify hardware resources used toautomatically group servers. For example, as illustrated in the exampleembodiment of FIG. 42, the user has indicated: a range of 4-16 CPU coresper server, a range of 32-256 GB of memory per server, 10 Gbps networkinterconnects at a maximum of one hop from each other, SCSI storage onthe same L2 ethernet domain. In at least one embodiment, the user mayalso select the desired minimum number of matching servers to be found(e.g., 32 in the example illustrated in FIG. 42).

Using the search parameters specified by the user, the DataGrid Systemmay then perform a Subscriber System database search (e.g., of theentire collection of subscriber servers), to identify server(s) whichmatch or satisfy the user specified hardware resource requirements. Forexample, in the example embodiment of FIG. 42, the DataGrid System mayidentify 347 servers which match the user specified hardware resourcerequirements, and may automatically and/or dynamically group theidentified servers into a plurality of different logical groups based onidentical or similar hardware resources and other characteristics (e.g.,such as location, etc.).

In some embodiments, the GUI 4202 of FIG. 42 may be configured ordesigned to provide other types of information, content and/orfunctionality, including, for example, defining and/or creating one ormore server groups based on one or more of the following criteria (orcombinations thereof):

-   -   Identical package configurations, for example where virtual        machines are provisioned from the same base or golden image, or        where physical servers are imaged from the same golden image, or        where containers are deployed from the same container image    -   Similar package configuration, for example where a filter groups        servers or containers based on a degree of identity which may be        determined by one or more of the following (or combinations        thereof):        -   A percent of identical packages (e.g., identical package            names and versions).        -   A percent of packages which are identical in name but may            vary in version; the degree of variation may also be            filtered.        -   Lists of packages which are not to be considered in the            grouping determination.        -   Lists of packages whose versions are not to be considered in            the grouping determination.        -   Lists of packages which must be considered, if present, in            the grouping determination and which must be identical.        -   Lists of packages which must be considered, if present, in            the grouping determination and whose versions are not to be            considered in the grouping determination.        -   A percent of identical package upgrades recommended by the            DataGrid System, where this identity may be determined by            one or more of the following (or combinations thereof):            -   Identical source package name.            -   Identical source package version.            -   Identical target package name.            -   Identical target package version.

In at least one embodiment, the GUI 4201 may be configured or designedto include functionality for enabling a user to selectively choosegroups of servers to which the same or similar set of changes can beapplied (e.g., upgrade to new OS, change version of packages, etc.). Insome embodiments, the process of changes may be staged so that thechange is at first applied to one (or a few) servers from the group, andonce the result is confirmed to be successful, the remaining similarservers are changed (e.g., in one or more subsequent operations). In atleast one embodiment, the telemetry data sent from the first few changedservers may be used to determine whether the result is (or is not)successful, and to determine whether (or not) the remaining servers willbe changed (and if not, what other change(s) may be applied to them inorder to ensure successful result).

FIG. 43 illustrates an example screenshot of a graphical user interface(GUI) 4301 which may be used to facilitate, initiate and/or performvarious operation(s) and/or action(s) relating to the DataGridTechnology such as, for example, one or more of the following (orcombinations thereof):

-   -   Browse list(s) of subscriber systems 4310 that have sent        telemetry data.    -   Sort the list(s) by Hostname 4311, System ID 4313 and/or IP        address 4315, for example, by clicking on the appropriate column        headings.    -   Enable users to initiate searches (e.g., using search box 4302)        for selected system(s) matching user-specified system        properties, such as, for example, Hostname 4311, System ID 4313,        IP address 4315, and/or other types of system properties.    -   Search for system(s) based on partial match(es) of system        properties, such as, for example:        -   By partial hostname, e.g., by a starting/ending portion of            the name, a wildcard or a regular expression; or list of            hostnames or partial hostnames.        -   By System ID (e.g., within a list of system IDs, a portion            of a system ID, etc.).        -   By IP address filter (e.g., by a subnet designation, such            as, for example 172.17.0.0/16 or 172.17.0.0/24), list of IP            addresses or subnets.        -   Etc.    -   Select one or more systems for performing or implementing one or        more group action(s).    -   Acquire additional information from selected Subscriber        System(s) (e.g., via user specifying its Hostname, System ID, or        IP address)    -   Request control actions on selected Subscriber System(s) (e.g.,        via user specifying its Hostname, System ID, or IP address).    -   View detailed information relating to one or more selected or        identified Subscriber System(s). Examples of various types of        detailed information which may be viewed are illustrated in FIG.        44.

In the specific embodiment of FIG. 43, it is assumed that:

-   -   A user has established a subscriber account with a service based        on the DataGrid Technology (e.g., by signing up on a web page of        the DataGrid Analytics Service).    -   One or more Subscriber System(s) (e.g., physical servers,        virtual machines, containers, etc.) have sent telemetry data        once or multiple times.    -   A user has logged in a GUI application (browser-based or        application installed on a laptop or mobile device) and        requested the list of systems to be displayed (which may be the        initial page on which the GUI opens upon login)

As used herein, the term “DataGrid Technology” may refer to theanalytics performed on a system's configuration using the data collectedfrom a plurality of Subscriber System(s) (e.g., crowdsourced,machine-learning, etc.).

Alternate embodiments of the GUI of FIG. 43 may be configured ordesigned to provide other types of information, content and/orfunctionality, such as, for example, one or more of the following (orcombinations thereof):

-   -   Paging through long lists of systems by selecting a page number,        next page or previous page links.    -   Navigating to a subset of subscriber systems, such as systems in        a particular datacenter, systems participating in a specific        application service (e.g., accounting), systems of a given type        (e.g., only virtual machines), etc.    -   Displaying detailed information about each system, such as data        initially reported, type and version of operating system running        on each system, configuration ID for the system, date/time when        the system last sent telemetry data, etc.    -   Displaying detailed information about qualifications of each        system, such as its DGRI score, expected reliability (e.g., mean        time between failures), vulnerability status, etc.    -   Selecting multiple systems (e.g., by shift-clicking on a        hostname or using checkboxes).    -   Etc.

FIG. 44 illustrates an example screenshot of a graphical user interface(GUI) 4401 which may be used to facilitate, initiate and/or performvarious operation(s) and/or action(s) relating to the DataGridTechnology such as, for example, one or more of the following (orcombinations thereof):

-   -   Display information collected from a system, such as, for        example, system's hostname, system ID, IP address, operating        system type and version, and/or other system related information        (e.g., as shown in the System Summary block 4410)    -   Display the results of analysis of the system's information        using the DataGrid Technology, such as, for example, results        relating to one or more of the following (or combinations        thereof):        -   Packages 4420 (shown closed),        -   Vulnerabilities 4430 (shown open),        -   System's history 4440 (shown closed),        -   Component/package repositories 4450 (shown closed),        -   Etc.    -   Examine lists of packages 4420 installed and configured on the        system, including their version and release numbers, available        updates, and evaluation score (such as vulnerabilities, DGRI        score, popularity rank, reliability, etc.).    -   Examine lists of vulnerabilities 4430 affecting the system based        on the configuration, including vulnerability details such as        CVE ID, severity, description, and list of packages and their        specific versions that include the vulnerability, as well as        configuration values and other configuration elements reported        from the system.    -   Examine vulnerability summaries in the block 4431, including        total number of vulnerabilities affecting the system, maximum        severity level, and maximum severity level that the system will        have if all vulnerabilities that have fixes available are fixed        (e.g., maximum severity level of the vulnerabilities for which a        fix is currently not available). Some embodiments may also        include one or more of the following:        -   DGRI score        -   Estimated MTBF and/or vulnerability exposure risk        -   Percentile of all servers (among all customers/subscribers            or within a group of subscribers that have common            characteristics, such as location, hardware architecture,            products/packages in use, etc.) where this particular server            is, based on reliability, projected MTBF, security,            vulnerability, reliability or other characteristics by which            servers are compared; the percentile may be showed both as            of the current configuration as well as for the target            configuration (e.g., after a set of changes is selected            using the GUI from FIG. 33).    -   For each vulnerability affecting the system shown in the        vulnerability list 4436, examine:        -   Vulnerability ID (e.g., CVE ID with a hyperlink to more data            about the vulnerability, e.g., security database pages            provided by the package's vendor or security analysis            company),        -   Severity level (e.g., 1 meaning minor impact, 10 meaning            critical),        -   Confidence level that the vulnerability actually affects            this system (e.g., 10 meaning 100% confident),        -   Brief description of the vulnerability and its impact,        -   Attack vector by which the vulnerability can be exploited            (e.g., over a network, only with physical access, etc.),        -   Whether a fix is available for this vulnerability (and            whether it fully or only partially resolves the            vulnerability),        -   List of one or more packages installed on the system that            include exploitable code for this vulnerability (i.e.,            packages that make the system vulnerable).    -   Filter the list of vulnerabilities using the filter block 4432,        for example by specifying filter parameters such as, for        example, one or more of the following (or combinations thereof):        -   A full or partial vulnerability ID (e.g., CVE-2015 to show            vulnerabilities found in year 2015),        -   Severity level range (e.g., all vulnerabilities with            severity higher or equal to 7.5),        -   Confidence level range,        -   Keywords for the description,        -   One or more attack vector types,        -   Whether a fix is available or not (e.g., only            vulnerabilities that have fixes),        -   Partial or full package name and/or version,        -   Etc.    -   Examine history of the system in the block 4440, including:        -   When the system was created,        -   When system has last reported, and/or how many times it has            reported.        -   What changes were made to the system's configuration and at            what times (e.g., timestamps and package names/versions that            changed; configuration elements that changed; the old and            new values, who changed it, who authorized the change,            etc.),        -   Audit(s) of configuration changes.        -   Etc.    -   Examine lists of component and package repositories 4450        configured on the system for obtaining updates (e.g., yum or apt        repositories), whether digital signature is required when        obtaining packages, etc.

In the specific embodiment of FIG. 44, it is assumed that:

-   -   A user has performed the steps for selecting a particular system        in a user interface, such as the one shown in FIG. 43.    -   A user has caused telemetry data to be sent from a system for        analysis by the DataGrid Technology, and requested the analysis        results to be displayed.

Alternate embodiments of the GUI of FIG. 44 may be configured ordesigned to provide other types of information, content and/orfunctionality, such as, for example, one or more of the following (orcombinations thereof):

-   -   Find the overall analytics information for the system as a        whole, such as system's DGRI score, expected reliability level,        reliability or vulnerability percentile among multiple systems,        etc., results from analytics performed with the DataGrid        Technology.    -   Find the possible target score of a recommended configuration        that the system can be upgraded to from the current        configuration; further, initiate change of configuration to the        recommended one and/or edit the recommended configuration prior        to initiating the change, examining the expected target score of        the edited configuration.    -   For each recommended or manually selected configuration change,        find the probability of successfully making this change (e.g.,        from the current to the target configuration), based on the        analytics provided by the DataGrid Technology (for example, by        computing the percent success rate of the same change being        applied to other systems in the past and providing the        probability of success for this change). Based on        subscribed-defined policy, the expected target score and success        probability, determine whether to proceed with the change and/or        what additional authorizations (e.g., human approval) are        necessary.    -   For each package shown in the collapsible panel 4420, find the        package score provided by the DataGrid Technology analytics,        representing the package's DGRI score, reliability/compatibility        info, vulnerability status, as well as recommended (or manually        selected) target version, target score,        reliability/compatibility info, target vulnerability status and        probability of successfully making the transition to the target        version.    -   Show the detailed changes performed on each configuration update        (e.g., when updating packages, show list of newly installed        packages, list of removed packages and/or list of packages that        were upgraded/downgraded from one version to another, and the        specific versions; or show the list of modified configuration        files together with the old and new values).    -   Etc.

FIG. 45 illustrates an example screenshot of a graphical user interface(GUI) 4501 which may be used to facilitate, initiate and/or performvarious operation(s) and/or action(s) relating to the DataGridTechnology such as, for example, one or more of the following (orcombinations thereof):

-   -   Integrate the DataGrid Technology into third party system        management products, such as Plesk.    -   Provide telemetry data and DataGrid Technology analytics results        as part of another product.    -   Select the DataGrid GUI from the product menu 4510.    -   Provide, enable, initiate, and/or perform one or more        operation(s), action(s) such as one or more of those described        respect to FIG. 44.    -   Find summary information about a system in the summary box 4520,        such as operating system name and version, when the system first        sent telemetry data, when it last sent telemetry data, when the        system was last evaluated using the DataGrid Technology, etc.    -   Find summary results information from both telemetry and        analysis results in the box 4530, including, for example: total        number of packages, total number of vulneraiblities, maximum        severity of all vulnerabilities, maximum severity of all        vulnerabilities that don't have fixes available, etc. Compare        the summary results of this server/configuration to all or        selected (similar) servers.    -   Compare the summary results of this server/configuration to        specific group(s) of servers that use the same third party        product (e.g., Oracle, Plesk, Ansible, Docker Compose, etc.).    -   Find the full list of packages 4540 installed on the tracked        system, the information for each package including, for example:        the package name (below the heading 4541), the version and        release numbers (below the heading 4543), the CPU architecture        (below the heading 4545), etc.    -   Sort the list of packages 4540 by clicking on the column heading        to sort on that column, including, for example: sort by name        4541, sort by version/release number 4543, sort by architecture        4545 (e.g., x86, amd64, none), etc.    -   Provide access to services, features, and/or information 4510        such as, for example, one or more of the following (or        combinations thereof):        -   System analysis (e.g., a web portal providing further            information and/or information about other systems of the            same subscriber),        -   Mail/messages,        -   Applications,        -   Files/documents,        -   Database access and searching functionality,        -   File sharing,        -   Statistics,        -   Tools and settings,        -   Extensions,        -   Account information        -   User profile information,        -   Blogs,        -   Community support forums,        -   Help desk,        -   Social networks,        -   Announcements        -   Etc.

In the specific embodiment of FIG. 45, it is assumed that:

-   -   A user of a third party product, such as a system management        product has installed the DataGrid plugin/extension/module to        add the DataGrid Technology capability to that product and/or        for that system.    -   A user has logged into the third party product GUI and has        selected the DataGrid information screen and selected the        Packages tab 4540.    -   The system in question has sent telemetry data and the DataGrid        Technology analytics has been performed (e.g., either prior to        user's selection or triggered by it).

Alternate embodiments of the GUI of FIG. 45 may be configured ordesigned to provide other types of information, content and/orfunctionality, such as, for example, one or more of the following (orcombinations thereof):

-   -   Find the overall analytics information for the system as a        whole, such as system's DGRI score, expected reliability level,        etc., results from analytics performed with the DataGrid        Technology.    -   Find the possible target score of a recommended configuration        that the system can be upgraded to from the current        configuration; further, initiate change of configuration to the        recommended one and/or edit the recommended configuration prior        to initiating the change, examining the expected target score of        the edited configuration.    -   For each recommended or manually selected configuration change,        find the probability of successfully making this change (from        the current to the target configuration), based on the analytics        provided by the DataGrid Technology (for example, by computing        the percent success rate of the same change being applied to        other systems in the past and providing the probability of        success for this change).    -   For each package shown in the package list 4540, find the        package score provided by the DataGrid Technology analytics,        representing the package's DGRI score, reliability/compatibility        info, vulnerability status, as well as recommended (or manually        selected) target version, target score,        reliability/compatibility info, target vulnerability status and        probability of successfully making the transition to the target        version.    -   Initiate a configuration change, e.g., to upgrade packages, to        perform recommended or manually selected configuration changes.    -   Configure policy for automatically triggering configuration        changes based on recommendation(s) made based on the DataGrid        Technology analysis (e.g., if the score of the recommended        configuration is 100 points or more higher than the current        configuration's score, apply configuration; or if the        recommended configuration resolves severe vulnerabilities in the        current configuration, automatically make the recommended        changes, or request them through a workflow system for a manual        or automated approval).    -   Etc.

FIG. 46 illustrates an example screenshot of a graphical user interface(GUI) which may be used to facilitate, initiate and/or perform variousoperation(s) and/or action(s) relating to the DataGrid Technology suchas, for example, one or more of the following (or combinations thereof):

-   -   Provide, enable, initiate, and/or perform one or more        operation(s), action(s) such as one or more of those described        respect to FIG. 45.    -   Integrate the DataGrid Technology into third party system        management products, such as Plesk.    -   Provide telemetry data and DataGrid Technology analytics results        as part of another product.    -   Examine list of vulnerabilities 4640 affecting the system based        on the configuration, including installed packages and their        specific version, configuration values and other configuration        elements reported from the system.    -   For each vulnerability affecting the system shown in the        vulnerability list 4640, examine:        -   Vulnerability ID (CVE ID) 4641, which may provide hyperlinks            to more data about the vulnerability (e.g., security            database pages provided by the package's vendor or security            analysis company, etc.),        -   Severity level 4643 (e.g., minor impact=1, critical=10),        -   Brief description of the vulnerability and its impact 4645,        -   Attack vector 4647 by which the vulnerability can be            exploited (e.g., over a network, only with physical access,            etc.),        -   Whether a fix is available for this vulnerability 4649,            and/or whether each fix fully or only partially resolves the            vulnerability,        -   List(s) 4651 of one or more packages installed on the system            that include exploitable code for this vulnerability (e.g.,            packages that make the system vulnerable).    -   Sort the list of vulnerabilities according to one or more        attributes (e.g., such as attributes indicated by column headers        4641, 4643, 4645, 4647, 4649, 4651)    -   Find useful links for further understanding of a vulnerability        (e.g., by clicking on the vulnerability ID).    -   Provide access to various services, features, and/or information        4610.

In the specific embodiment of FIG. 46, it is assumed that:

-   -   A user of a third party product, such as a system management        product has installed the DataGrid plugin/extension/module to        add the DataGrid Technology capability to that product and/or        for that system    -   A user has logged into the third party product GUI and has        selected the DataGrid information screen and has selected the        Vulnerabilities tab 4640.    -   The system in question has sent telemetry data and the DataGrid        Technology analytics has been performed (either prior to user's        selection or triggered by it).

Alternate embodiments of the GUI of FIG. 46 may be configured ordesigned to provide other types of information, content and/orfunctionality, such as, for example, one or more of those described withrespect to FIG. 45.

FIGS. 47-49, 50A-B, 51, 52A-B, 53A-B, 54, 55A-B, 56, 57-63, 64A-B,65A-D, 66-69, 70A-B, 71A-B, 72, and 73A-C illustrate example screenshotsof different command line interfaces (CLIs) and/or applicationprogramming interfaces (APIs), which may be used to facilitate, initiateand/or perform various operation(s) and/or action(s) relating to theDataGrid Technology.

FIG. 47 illustrates an example screenshot of a command line interface(CLI) 4701 which may include functionality for providing a standalonetelemetry client that can be installed on a plurality of tracked systems(subscribers servers). In at least one embodiment, the telemetry clientmay be configured or designed to support various commands, including,for example:

-   -   Collect—collects configuration data and/or Telemetry data and        sends it to the DataGrid Analytics Service. Optionally, this        command may be requested as conditional, meaning that if the        config has changed, it will send the telemetry config data;        otherwise it will either do nothing (nop option) or send a        telemetry signal (e.g., ping) to indicate that the system is        operational and not changed    -   Signal—send a telemetry signal (e.g., such as log error, reboot,        system up/down indication, etc.).

In addition, signals may be sent from systems other than the trackedsystem. For example, a monitoring system such as Nagios, can send atelemetry event for a tracked system that Nagios monitors, e.g., “systemdown” indicating that the system is not responsive and/or is notproviding its required services.

FIGS. 48-49 illustrate an example screenshots of command line interfaces(CLIs) which may include functionality for causing the DataGrid Systemto initiate and/or perform various operation(s) and/or action(s)relating to the DataGrid technology such as, for example, one or more ofthe following (or combinations thereof):

-   -   Cause one or more servers being managed with Ansible to send        configuration data to the DataGrid feed server API.    -   Cause one or more servers being managed with Ansible to send one        or more signal(s) to the DataGrid feed server API.    -   Determine and display DGRI score(s) for one or more servers        being managed by Ansible.

In at least one embodiment, one or more of these activities may beinitiated via a command line utility and a playbook (herein referred toas “dgri.yml”) which may be part of an ansible playbook for the DataGridAnsible module.

For example, in the specific embodiment of FIG. 48, it is assumed that auser has executed the CLI command: ansible-playbook/usr/share/dgri/ansible-playbooks/dgri.yml -v This command may cause allservers listed in the DataGrid Ansible module configuration file to sendtheir configuration to the DataGrid service.

In another embodiment, a user may execute the CLI command:ansible-playbook /usr/share/dgri/ansible-playbooks/dgr.yml -v -e“hosts=test”

This command may cause all servers listed in the Ansible group “test” tosend their configuration to the DataGrid service.

In the specific embodiment of FIG. 49, it is assumed that a user hasexecuted the CLI command: ansible-playbook/usr/share/dgri/ansible-playbooks/dgri.yml -v -e “action=score” Thiscommand causes the DataGrid System to acquire, generate, and/or displaythe DGRI score(s) for all servers listed in the DataGrid Ansible moduleconfiguration file.

In another embodiment, a user may execute the CLI command:ansible-playbook /usr/share/dgri/ansible-playbooks/dgr.yml -v -e“action=signal signal=ping hosts=test” This command may cause allservers listed in the DataGrid Ansible module configuration file asmembers of the server group “test” to send a ping signal to the DataGridservice.

FIGS. 50A-B illustrate an example of a command line interface (CLI)which may include functionality for providing a command line utility(herein referred to as “dgri-query”) which uses the DataGrid API server(API) to obtain information about systems, configurations andvulnerabilities (e.g., for servers pertaining to a subscriber account).According to different embodiments, the dgri-query CLI may be configuredor designed to provide various types of functionality and/orinformation, such as, for example, one or more of the following (orcombinations thereof):

-   -   Display a help message for the dgri-query utility.    -   Check if the DataGrid API is available and working.    -   List all systems in the account.    -   Acquire, generate, and/or display information on a specific        system by System ID.    -   Acquire, generate, and/or display the DGRI score and metrics for        a system's current configuration.    -   Acquire, generate, and/or display a system's current        configuration.    -   Acquire, generate, and/or display information on a specified        configuration.    -   Acquire, generate, and/or display the DGRI score and metrics for        a specified configuration.    -   Acquire, generate, and/or display information on a specified        vulnerability.    -   Acquire, generate, and/or display a list of all vulnerable        systems in the account.    -   Etc.

In the specific embodiment of FIGS. 50A-B, it is assumed that a user hasexecuted the CLI command: dgri-query -help, causing the DataGrid Systemto display a help message for the utility.

In another embodiment, a user may execute the CLI command: dgri-queryhealth, causing the DataGrid System to check if the DataGrid API isavailable and working.

In another embodiment, a user may execute the CLI command: dgri-query -psystems, causing the DataGrid System to list all systems in the account.

In another embodiment, a user may execute the CLI command: dgri-query -psystems/i-d332137a, causing the DataGrid System to acquire or retrieveinformation on a specific system by system ID.

In the specific embodiment of FIG. 51, it is assumed that a user hasexecuted the CLI command: dgri-query -p systems/i-d332137a/score,causing the DataGrid System to acquire, generate, and/or display theDGRI score and metrics for a system's current configuration.

In the specific embodiment of FIGS. 52A-B, it is assumed that a user hasexecuted the CLI command: dgri-query -p systems/i-d332137a/config,causing the DataGrid System to acquire, generate, and/or display asystem's current configuration.

In the specific embodiment of FIGS. 53A-B, it is assumed that a user mayexecute the CLI command: dgri-query -pconfigs/49a628bda5872aJ7bf8862acba1ebdb9, causing the DataGrid System toacquire, generate, and/or display information on a specifiedconfiguration.

In another embodiment, a user has executed the CLI command: dgri-query-p configs/49a628bda5872aJ7bf8862acba1ebdb9 score, causing the DataGridSystem to acquire, generate, and/or display the DGRI score and metricsfor a specified configuration (e.g., the score output may be similar tothe one shown in FIG. 51, excluding the system ID information).

In the specific embodiment of FIG. 54, it is assumed that a user hasexecuted the CLI command: dgri-query -p vulnerabilities/CVE-2015-4002,causing the DataGrid System to acquire, generate, and/or displayinformation on a specified vulnerability.

In the specific embodiment of FIGS. 55A-B, it is assumed that a user hasexecuted the CLI command: dgri-query -p vulnerable, causing the DataGridSystem to acquire, generate, and/or display a list of all vulnerablesystems in the account. In another embodiment, the user can furtherspecify filter parameters, e.g., to obtain the list of serversvulnerable to vulnerabilities with a given severity (e.g., 8 or above),given access vector, etc.

FIG. 56 illustrate an example of a command line interface (CLI) whichmay include functionality for providing a command line utility andplaybook (herein referred to as “dgri-yum.yml”) which may be part of anansible playbook for the DataGrid Ansible module. According to differentembodiments, the dgri-yum.yml CLI may be configured or designed toprovide various types of functionality and/or information, such as, forexample, one or more of the following (or combinations thereof):

-   -   Conditionally install or upgrade a package on servers being        managed with Ansible, for example, based on the predicted change        in the DGRI score resulting from configuration changes. For        example, in one embodiment, a user may use the dgri-yum.yml CLI        to instruct the DataGrid System to conditionally install or        upgrade a specified package if the DGRI score (of the modified        system) is predicted to be X units (e.g., or Y %) than the DGRI        score of the current (e.g., unmodified) system.    -   Install a package on servers being managed with Ansible.    -   Etc.

In the specific embodiment of FIG. 56, it is assumed that a user hasexecuted the CLI command: ansible-playbook/usr/share/dgri/ansible-playbooks/dgri-yum.yml -v -e “name=bind-utils”,causing the DataGrid System to conditionally install a package using theAnsible dgri-yum module.

In the specific embodiment of FIG. 57, it is assumed that a user hasexecuted the CLI command: ansible-playbook/usr/share/dgri/ansible-playbooks/dgri-yum.yml -v -e “name=httpddry_run=1”, causing the DataGrid System to perform a dry_run of packageinstallation using the Ansible dgri-yum module, and display the score ofthe resulting change without actually effecting or implementing thechange.

In the specific embodiment of FIG. 58, it is assumed that a user hasexecuted the CLI command: ansible-playbook/usr/share/dgri/ansible-playbooks/dgri-yum.yml -v -e “name=httpdmin_score=700”, causing the DataGrid System to conditionally install thehttpd package using the Ansible dgri-yum module only if the changeresults in a DGRI Score>=700.

In the specific embodiment of FIG. 59, it is assumed that a user hasexecuted the CLI command: ansible-playbook/usr/share/dgri/ansible-playbooks/dgri-yum.yml -v -e “name=httpdstate=absent”, causing the DataGrid System to uninstall a specifiedpackage using the Ansible dgri-yum module. In at least some embodiments,the dgri-yum.yml CLI may be configured or designed to includefunctionality for causing the DataGrid System to perform a conditionaluninstall of one or more specified package(s).

In the specific embodiment of FIG. 60, it is assumed that a user hasexecuted the CLI command: ansible-playbook/usr/share/dgri/ansible-playbooks/dgri-yum.yml -v -e “name=httpdmax_degrade=0”, causing the DataGrid System to conditionally install apackage using the Ansible dgri-yum module only if the change will notresult in a DGRI score decrease. In this particular example, theinstallation fails to automatically proceed because of the resultingscore decrease.

In the specific embodiment of FIG. 61, it is assumed that a user hasinstalled a DataGrid yum CLI plug-in module and then executed the CLIcommand: yum install screen, causing the DataGrid System to interceptyum configuration change operations, and after yum determines the fullset of changes, including their dependencies, the DataGrid yum CLImodule uses the DataGrid API to get the DGRI Scores and otherinformation relevant to the confidence of the proposed configurationchanges, displays this information to the user and prompts the userwhether or not to proceed with the configuration changes. In thespecific example embodiment of FIG. 61, is is assumed that whenprompted, the user has entered ‘y’ to continue with the installation,automatically and/or conditionally causing the DataGrid yum CLI moduleto install a new package on the server. Because the resultingconfiguration is new to the DataGrid System there are no data points,and as a result the DGRI score for the server configuration degrades. Inthe specific example embodiment of FIG. 61, output particular to theDataGrid yum CLI module is shown bold text. In some embodiments, theuser prompt may be invoked only if the minimum required score is notmet, or if the score change is close to a specified threshold value(e.g., if the score is below a first minimum threshold value, theinstallation is automatically cancelled; when the score is above asecond minimum threshold value, the installation is automaticallycompleted).

In the specific embodiment of FIG. 62, it is assumed that a user hasexecuted the CLI command: yum upgrade openssl, causing the DataGridSystem to automatically and/or conditionally upgrade the openssl packageon the server. In one embodiment, the user may be prompted by theDataGrid System before initiating the upgrade, and the user may enter‘y’ to continue with the upgrade, and to cause the DataGrid System toupgrade the openssl package on the identified server.

In the specific embodiment of FIG. 63, it is assumed that a user hasexecuted the CLI command: yum history undo 6, causing the DataGridSystem to initiate a conditional roll back operation. In the specificexample embodiment of FIG. 63, the DataGrid System prompts the userbefore initiating the roll back operation, and the user may enter ‘y’ tocontinue with the roll back, and to cause the DataGrid System to rollback a previous upgrade.

In the specific embodiment of FIGS. 64A-B, it is assumed:

-   -   That a user has executed the CLI command: yum update.    -   When prompted, the user has entered ‘y’ to continue with the        upgrade.    -   In one embodiment, this command may cause the DataGrid System to        automatically and/or conditionally update and/or upgrade all or        selected installed package(s) on the server to their most recent        versions.

In at least some embodiments, when prompted, the user may enter ‘?’ viathe yum update CLI command to cause the DataGrid System to display moredetailed information, including for example, one or more of thefollowing:

-   -   The target configuration DGRI score.    -   The number of systems which have used the target configuration        historically.    -   The number of systems which use the target configuration        currently.    -   The number of signal events for all systems which have used the        target configuration historically.    -   The number of success signals.    -   The number of failure signals.    -   The number of signals by type.    -   Vulnerabilities present in the target configuration, including,        for each vulnerability, one or more of the following (or        combinations thereof): CVE identifier, CVSS severity, and        indication of whether the vulnerability is new or is retained        from the previous configuration.    -   The number of vulnerabilities removed from the target        configuration in relation to the previous configuration.    -   Etc.

FIGS. 65A-D illustrate an example of a server configuration which hasbeen POSTed as data to the DataGrid feed server API. Subscriberaccount-based authentication information may be included in the requestheaders. In this example the configuration feed request has been sentto: https://test-feed.DataGridsys.com/configs 1 n this example therequest response is HTTP status code 200 (OK).

FIG. 66 illustrates an example of a server signal which has been POSTedas data to the DataGrid feed server API. Subscriber account-basedauthentication information may be included in the request headers. Inthis example the signal feed request has been sent to:https://test-feed.DataGridsys.com/signals In this example the requestresponse is HTTP status code 200 (OK).

In at least one embodiment, the DataGrid CLI may include functionalityfor enabling a user to initiate, via the DataGrid API, a healthcheck ona specified system, and to return the status of the healthcheck.

For example, in one embodiment, a user may use the DataGrid API to senda GET request to: https://test-api.DataGridsys.com/api/v1/health.Subscriber account-based authentication information may be included inthe request headers. The request may cause the DataGrid System toperform a healthcheck on the specified server and return the status ofthis healthcheck.

FIG. 67 illustrates an example of a response which may be sent by theDataGrid API server in response to a GET request. Subscriberaccount-based authentication information may be included in the requestheaders. In the specific example embodiment of FIG. 67, it is assumedthat:

-   -   the GET request has been sent to:        https://test-api.DataGridsys.com/api/v1/systems.    -   The request is to return a list of all systems for a subscriber        account, including for each: system identifiers, identifiers for        the current and previous configurations, and additional        information such as the timespan associated to each historical        configuration, the number of ping signals received by the        system, etc.

FIG. 68 illustrates a different example of a response sent by theDataGrid API server in response to a GET request. Subscriberaccount-based authentication information may be included in the requestheaders. In the specific example embodiment of FIG. 68, it is assumedthat:

-   -   The request has been sent to:        https://test-api.DataGridsys.com/api/v1/systems/i-e1c26008.    -   The request causes the DataGrid System to return information on        a specific system by system ID, including, for example: system        identifiers, identifiers for the current and previous        configurations, and additional information such as the timespan        associated to each historical configuration, the number of ping        signals received by the system, etc.

FIG. 69 illustrates a different example of a response sent by theDataGrid API server to a GET request. Subscriber account-basedauthentication information may be included in the request headers. Inthe specific example embodiment of FIG. 69, it is assumed that:

-   -   The request has been sent to:        https://test-api.DataGridsys.com/api/v1/systems/i-e1c26008/score.    -   The request causes the DataGrid System to return the DGRI score        and other metrics for a system's current configuration. Examples        of additional metrics may include, but are not limited to, one        or more of the following (or combinations thereof): system        identifiers, the current configuration identifier, the number of        systems known to the DataGrid System which use or have used this        configuration, the number of signals received, the number of        signals received by signal type, a list of CVE identifiers of        vulnerabilities that affect the configuration, etc.

FIGS. 70A-B illustrate a different example of a response sent by theDataGrid API server to a GET request. Subscriber account-basedauthentication information may be included in the request headers. Inthe specific example embodiment of FIG. 70, it is assumed that:

-   -   The request has been sent to:        https://test-api.DataGridsys.com/api/v1/systems/i-e1c26008/config.    -   The request causes the DataGrid System to return information on        a specific system's current configuration, including, for        example: system identifiers, the current configuration        identifier, the number of systems known to the DataGrid System        which use or have used this configuration, the number of signals        received, the number of signals received by signal type, a list        of CVE identifiers of vulnerabilities that affect the current        configuration, a list of packages in the current configuration,        operating system identifiers such as the name, version, etc.

FIGS. 71A-B illustrate an example of the response sent by the DataGridAPI server to a GET request. Subscriber account-based authenticationinformation may be included in the request headers. In the specificexample embodiment of FIG. 71, it is assumed that:

-   -   The request has been sent to:        https://test-api.DataGridsys.com/api/v1/configs/169d941a47702160bd2e6f94db0d06bc.    -   The request causes the DataGrid System to return information for        a specified configuration, including, for example: the        configuration identifier, the number of systems known to the        DataGrid System which use or have used this configuration, the        number of signals received, the number of signals received by        signal type, a list of CVE identifiers of vulnerabilities that        affect the configuration, a list of packages in the        configuration, operating system identifiers such as the name,        version, etc.

FIG. 72 illustrates an example of the response sent by the DataGrid APIserver to a GET request. Subscriber account-based authenticationinformation may be included in the request headers. In the specificexample embodiment of FIG. 72, it is assumed that:

-   -   The request has been sent to:        https://test-api.DataGridsys.com/api/v1/configs/169d941a47702160bd2e6f94db0d06bc/score.    -   The request causes the DataGrid System to return the DGRI score        and other metrics for a specified configuration. Additional        metrics may include any of: the configuration identifier, the        number of systems known to the DataGrid System which use or have        used this configuration, the number of signals received, the        number of signals received by signal type, a list of CVE        identifiers of vulnerabilities that affect the configuration,        etc.

FIGS. 73A-C illustrate an example of the response sent by the DataGridAPI server to a GET request. Subscriber account-based authenticationinformation may be included in the request headers. In the specificexample embodiment of FIG. 73, it is assumed that:

-   -   The request has been sent to:        https://test-api.DataGridsys.com/api/v1/vulnerable.    -   The request causes the DataGrid System to return a list of        Subscriber Systems which are vulnerable to one or more CVE        vulnerabilities, including for each: system identifiers, the        current configuration identifier, the DGRI score, a        configuration history list, a list of CVE identifiers of        vulnerabilities that affect the current configuration, etc.

In some embodiments, a user may use the DataGrid API to send a GETrequest to return information for a specified vulnerability. Forexample, a user may use the DataGrid API to send a GET request to:https://test-api.DataGridsys.com/api/v1/vulnerabilities/CVE-2014-6271.The request may cause the DataGrid System to return information for aspecified vulnerability including: the CVE identifier, a URL which canbe used to view the NIST NVD vulnerability summary for the CVE, a listof packages affected by the vulnerability including for each a versionspecification, a description of the vulnerability, a severity indicator,and additional information about the vulnerability provided by variouspackage vendors, etc.

Other Features/Benefits/Advantages Different embodiments of DataGridSystems (and/or DataGrid Technology) may be configured, designed, and/oroperable to provide, enable and/or facilitate one or more of thefollowing features, functionalities, benefits and/or advantages (orcombinations thereof):

-   A. Client System Software for acquiring client system telemetry data    and report to DataGrid Servers.-   B. Use of Telemetry data reported from plurality of customers to    provide guidance for system configurations for other customers.    -   1. Calculating of scores based on reported telemetry metrics.    -   2. Using telemetry data and scores to Generate/Determine system        reliability/compatibility/performance predictions of other        identified systems.        -   a. For existing Subscriber System(s)—analyze system            components/packages and generate scores based on            crowdsourced data. Determine whether any system            configuration changes are recommended. Determine other            recommendations for system. For example, based on current            system configuration, the DataGrid System may recommend that            you:            -   1) Back up N times per day/week/month.            -   2) Add Y additional servers upon reaching X % capacity                (recommend the parameter(s) that is(are) X (e.g., CPU                load, # requests/sec, memory usage), the threshold                value(s) of X, and the value of Y—assisted by guidance                based on observation of other system's telemetry).            -   3) Change configuration parameters (e.g., number of                worker threads of a server, amount of memory allocated                to a task, number of network buffers, etc.).            -   4) Change the version of the operating system, e.g.,                from Ubuntu 12.04 to Ubuntu 16.04.            -   5) Select a ready disk image to use (e.g., AMI or docker                image) from a plurality of versions available.            -   6) Change the versions of one or more packages installed                on your system.            -   7) Change the vendor for a package (e.g., replace MySQL                with MariaDB).            -   8) Execute code transformations (e.g., run migration                tool to upgrade source code from python version 2 to                python version 3 so that this code will run on python                version 3).            -   9) Etc.        -   b. For component/package updates—determine if update is/is            not recommended. Determine when to install update (if            recommended).    -   3. Automatically and/or dynamically identify package versions        that cause reliability problems.    -   4. Automatically and/or dynamically identify combination of        software components that don't work well together (whether in        general or specific versions, e.g., component A version 3 does        not work well with component B version 5 but OK with version 4).        Combinations of two or more component may be evaluated and        identified.    -   5. Automatically and/or dynamically prevent installation of        packages which have been predicted to cause problems with target        system; recommend alternative packages (or versions).    -   6. Conditional Updating/Upgrading:        -   a. Automatically and/or dynamically deciding whether to            upgrade or not.        -   b. Automatically and/or dynamically deciding when is the            right time to upgrade.        -   c. Automatically and/or dynamically identify recommended            version(s) of packages to install (e.g., based on DataGrid            DGRI Score and/or other scored metrics).        -   d. Automatically and/or dynamically initiating the            conditional upgrade/update based on predetermined criteria            (which can be defined by the user).    -   7. Triggering of automated updates when:        -   a. A system is identified that is not performing well or is            predicted to be using a bad system configuration (e.g.,            based on crowd-sourced telemetry data).        -   b. A new version of packages/images/configurations is            available that can improve system performance/metrics.    -   8. Immutable infrastructure cases:        -   a. Triggering build of a new system (instead of triggering            update).        -   b. Building new system image based on recommended            configuration.        -   c. Partially deploy new system in group of systems—X % new            systems, Y % old systems.        -   d. Run automated tests and evaluate/compare the performance            and reliability of the new and the old systems.-   C. Use of Telemetry data reported from plurality of customers to    provide automatic operations decisions for systems of other (or    same) customers.    -   1. Based on received telemetry from plurality of customers and        cross-customer analysis and modeling, choose configuration and        actions to perform on these or other customers' systems, such        as, for example, one or more of the following (or combinations        thereof):        -   a. Upgrading package version (or choosing package version).        -   b. Upgrading OS version.        -   c. Re-deploying application.        -   d. Re-testing application.        -   e. Changing configuration parameters of one or more systems,            for example, setting CPU limits/capacity, assigned memory,            assigned I/O throughput, configuration options (e.g., memory            pool size, data sharding segments and replication count),            number of load balanced worker systems    -   2. Based on requirements specified by a customer (such as        uptime, reliability, fault tolerance) and analysis of        configurations of other customers' telemetry data (including        configuration, and events and outcomes), change that customer's        configuration parameters, number of load balanced servers,        storage redundancy level/data replication count, backup        frequency, geographic distribution, etc., to achieve these        requirements.-   D. Use of Telemetry data reported from plurality of customers and    mathematical models created using machine learning techniques to    automatically and/or dynamically generate/implement:    -   1. Recommendations about operations procedures or configuration        changes on systems of a particular customer.    -   2. Automated operations, recommendations, and decisions for        similarly configured Subscriber Systems of other customers.-   E. Automatically gather data from a plurality of Subscriber System    configurations, and periodically monitor these systems to predict    outcomes for other customers. Use this information to improve    reliability/compatibility.-   F. Using dynamically generated scores (e.g., DGRI scores) to drive    automatic upgrades of machines/packages.-   G. Automatically and/or dynamically deriving metrics based on    combinations of packages.-   H. Aside from providing guidance for configuration changes, the    various DataGrid Techniques described herein can also provide novel    views into collections of systems (e.g., with respect to    configuration drift, or vulnerability footprint over time, risk,    etc.).-   I. Aside from providing guidance for configuration changes, the    various DataGrid Techniques described herein can also provide novel    approaches to Configuration Management Databases (CMDB), for    example, by providing automated and dynamic (e.g., real-time)    maintenance of the configuration database (e.g., instead of using    manual change processes), thus ensuring correctness of the database.-   J. The various DataGrid Techniques described herein can also provide    information useful to third party software/hardware or OS developers    (e.g., rate of adoption, market penetration, compatibility, usage,    early warnings of problems, competitive info, etc.).

Moreover, it will be appreciated that, via the use of specificallyconfigured computer hardware and software, the problems which are solvedand/or overcome by the various DataGrid techniques described herein arenecessarily rooted in computer technology in order to overcome problemsspecifically arising in the realm of computer networks. For example, asdescribed previously, numerous problems and limitations are typicallyencountered when attempting to use existing technology to implementvarious services and/or features such as those provided inDataGrid-enabled environments. Such problems and limitationsspecifically arise in the realm of computer networks, and the solutionsto these DataGrid environment problems and limitations (e.g., asdescribed herein) are necessarily rooted in computer technology.

Although several example embodiments of one or more aspects and/orfeatures have been described in detail herein with reference to theaccompanying drawings, it is to be understood that aspects and/orfeatures are not limited to these precise embodiments, and that variouschanges and modifications may be effected therein by one skilled in theart without departing from the scope of spirit of the invention(s) asdefined, for example, in the appended claims.

It is claimed:
 1. A computer implemented method for facilitatingautomated management of a plurality of subscriber systemscommunicatively coupled to a computer network, the plurality ofsubscriber systems including a first subscriber system, the methodcomprising causing at least one processor to execute instructions for:accessing first subscriber system telemetry information relating to anoperating environment of the first subscriber system; identifying, usingthe first subscriber system telemetry information, a first set ofconfiguration elements associated with the first subscriber system;acquiring crowdsourced telemetry information for a plurality of systems,the crowdsourced telemetry information including information aboutattributes, characteristics and/or configuration elements relating torespective operating environments of the plurality of systems; analyzingthe first subscriber system telemetry information and the crowdsourcedtelemetry information to dynamically evaluate at least one metricassociated with at least one entity of the first subscriber system,wherein the at least one metric includes at least one performance metricassociated with the at least one entity of the first subscriber system;automatically implementing or initiating, based on the analysis of thefirst subscriber system telemetry information and crowdsourced telemetryinformation, a first set of activities relating to management of thefirst subscriber system; and wherein the first set of activities furtherincludes automatically and dynamically initiating, based on the analysisof the first subscriber system telemetry information and crowdsourcedtelemetry information, at least one modification of at least oneconfiguration element at the first subscriber system.
 2. A computerimplemented system for facilitating automated management of a pluralityof subscriber systems communicatively coupled to a computer network, theplurality of subscriber systems including a first subscriber system, thesystem comprising: at least one processor; at least one interface; amemory storing a plurality of instructions; the at least one processorbeing operable to execute a plurality of instructions stored in thememory for causing at least one component of the computer network to:access first subscriber system telemetry information relating to anoperating environment of the first subscriber system; identify, usingthe first subscriber system telemetry information, a first set ofconfiguration elements associated with the first subscriber system;acquire crowdsourced telemetry information for a plurality of systems,the crowdsourced telemetry information including information aboutattributes, characteristics and/or configuration elements relating torespective operating environments of the plurality of systems; analyzethe first subscriber system telemetry information and the crowdsourcedtelemetry information to dynamically evaluate at least one metricassociated with at least one entity of the first subscriber system,wherein the at least one metric includes at least one performance metricassociated with the at least one entity of the first subscriber system;and automatically implement or initiate, based on the analysis of thefirst subscriber system telemetry information and crowdsourced telemetryinformation, a first set of activities relating to management of thefirst subscriber system; and wherein the first set of activitiesincludes automatically and dynamically initiating, based on the analysisof the first subscriber system telemetry information and crowdsourcedtelemetry information, at least one modification of at least oneconfiguration element at the first subscriber system.
 3. The computerimplemented system of claim 2 wherein the first subscriber systemcorresponds to a system or component selected from a group consistingof: a physical server, a virtual server, a virtual machine, a switch, arouter, a mobile device, a network device, a printer, and a container.4. The computer implemented system of claim 2 wherein the firstsubscriber system telemetry information includes at least one type ofinformation selected from a group consisting of: a package version, apackage name, an IP address, an open port, a network connection, aconfiguration parameter, an OS version, CPU consumption, memoryconsumption, a network service end connection, a configuration element,a configuration parameter value, a reboot event, a crash event, an errorevent, an system health status, a system or application log event, and asuccessful event.
 5. The computer implemented system of claim 2: whereinthe first set of activities further includes automatically anddynamically generating, based on the analysis of the first subscribersystem telemetry information and crowdsourced telemetry information,first subscriber system reliability information, the first subscribersystem reliability information identifying a first configuration elementinstalled at the first subscriber system which may cause reliabilityissues at the first subscriber system; and wherein the firstconfiguration element corresponds to a configuration element selectedfrom a group consisting of: a system component or device, a packagename, a package version, a package release, a container name, acontainer version, a virtual machine, a system attribute, a systemcharacteristic, an operating system name, an operating system version,an operating system release, a configuration parameter or setting, aBIOS version, a driver name, a driver version, and a firmware version.6. The computer implemented system of claim 2: wherein the first set ofactivities further includes automatically and dynamically generating,based on the analysis of the first subscriber system telemetryinformation and crowdsourced telemetry information, first subscribersystem reliability information, the first subscriber system reliabilityinformation identifying a first configuration element not installed atthe first subscriber system which may cause reliability issues at thefirst subscriber system; and wherein the first configuration elementcorresponds to a configuration element selected from a group consistingof: a system component or device, a package name, a package version, apackage release, a container name, a container version, a virtualmachine, a system attribute, a system characteristic, an operatingsystem name, an operating system version, an operating system release, aconfiguration parameter or setting, a BIOS version, a driver name, adriver version, and a firmware version.
 7. The computer implementedsystem of claim 2: wherein the first set of activities further includesautomatically and dynamically generating, based on the analysis of thefirst subscriber system telemetry information and crowdsourced telemetryinformation, first subscriber system compatibility information, thefirst subscriber system compatibility information identifying a firstconfiguration element installed at the first subscriber system which maycause compatibility issues at the first subscriber system; and whereinthe first configuration element corresponds to a configuration elementselected from a group consisting of: a system component or device, apackage name, a package version, a package release, a container name, acontainer version, a virtual machine, a system attribute, a systemcharacteristic, an operating system name, an operating system version,an operating system release, a configuration parameter or setting, aBIOS version, a driver name, a driver version, and a firmware version.8. The computer implemented system of claim 2: wherein the first set ofactivities further includes automatically and dynamically generating,based on the analysis of the first subscriber system telemetryinformation and crowdsourced telemetry information, first subscribersystem compatibility information, the first subscriber systemcompatibility information identifying a first configuration element notinstalled at the first subscriber system which may cause compatibilityissues at the first subscriber system; and wherein the firstconfiguration element corresponds to a configuration element selectedfrom a group consisting of: a system component or device, a packagename, a package version, a package release, a container name, acontainer version, a virtual machine, a system attribute, a systemcharacteristic, an operating system name, an operating system version,an operating system release, a configuration parameter or setting, aBIOS version, a driver name, a driver version, and a firmware version.9. The computer implemented system of claim 2: wherein the first set ofactivities further includes automatically and dynamically generating,based on the analysis of the first subscriber system telemetryinformation and crowdsourced telemetry information, first subscribersystem vulnerability information, the first subscriber systemvulnerability information identifying a first configuration elementinstalled at the first subscriber system which may cause vulnerabilityissues at the first subscriber system; and wherein the firstconfiguration element corresponds to a configuration element selectedfrom a group consisting of: a system component or device, a packagename, a package version, a package release, a container name, acontainer version, a virtual machine, a system attribute, a systemcharacteristic, an operating system name, an operating system version,an operating system release, a configuration parameter or setting, aBIOS version, a driver name, a driver version, and a firmware version.10. The computer implemented system of claim 2: wherein the first set ofactivities further includes automatically and dynamically generating,based on the analysis of the first subscriber system telemetryinformation and crowdsourced telemetry information, first subscribersystem vulnerability information, the first subscriber systemvulnerability information identifying a first configuration element notinstalled at the first subscriber system which may cause vulnerabilityissues at the first subscriber system; and wherein the firstconfiguration element corresponds to a configuration element selectedfrom a group consisting of: a system component or device, a packagename, a package version, a package release, a container name, acontainer version, a virtual machine, a system attribute, a systemcharacteristic, an operating system name, an operating system version,an operating system release, a configuration parameter or setting, aBIOS version, a driver name, a driver version, and a firmware version.11. The computer implemented system of claim 2: wherein the first set ofactivities further includes automatically and dynamically generating,based on the analysis of the first subscriber system telemetryinformation and crowdsourced telemetry information, at least oneconfiguration recommendation relating to a recommended modification ofat least one configuration element at the first subscriber system; andwherein the at least one configuration recommendation includes at leastone configuration recommendation selected from a group consisting of: apackage change recommendation, a package version change recommendation,a code change recommendation, a system attribute change recommendation,a system characteristic change recommendation, a system configurationparameter change recommendation, a component version changerecommendation, a container change recommendation, an operating systemchange recommendation, a component change recommendation, a virtualmachine change recommendation, a version upgrade recommendation, and aversion downgrade recommendation.
 12. The computer implemented system ofclaim 2: wherein the first set of activities further includesautomatically and dynamically initiating, based on the analysis of thefirst subscriber system telemetry information and crowdsourced telemetryinformation, at least one modification of at least one configurationelement at the first subscriber system; and wherein the at least onemodification includes at least one activity selected from a groupconsisting of: change of system component, change of system componentversion, change of configuration setting or parameter, change of systempackage, change of system package version, change of system container,change of system container version, change of OS version, change ofvirtual machine, change of system configuration parameter, change ofsystem attribute, change of system resource allocation, and change ofsystem operational parameter.
 13. The computer implemented system ofclaim 2: wherein the first set of activities further includesautomatically and dynamically preventing, based on the analysis of thefirst subscriber system telemetry information and crowdsourced telemetryinformation, initiation of at least one modification of at least oneconfiguration element at the first subscriber system; and wherein the atleast one modification includes at least one activity selected from agroup consisting of: change of system component, change of systemcomponent version, change of configuration setting or parameter, changeof system package, change of system package version, change of systemcontainer, change of system container version, change of OS version,change of virtual machine, change of system configuration parameter,change of system attribute, change of system resource allocation, andchange of system operational parameter.
 14. The computer implementedsystem of claim 2 being further operable to cause the at least oneprocessor to execute instructions for causing at least one component ofthe computer network to: automatically initiate a first conditionalmodification of a first configuration element at the first subscribersystem if it is determined that specific threshold criteria has beensatisfied for allowing the conditional modification of the firstconfiguration element to proceed; automatically prevent initiating afirst conditional modification of a first configuration element at thefirst subscriber system if it is determined that specific thresholdcriteria has not been satisfied for allowing the conditionalmodification of the first configuration element to proceed; and whereinthe first conditional modification includes at least one activityselected from a group consisting of: change of system component, changeof system component version, change of configuration setting orparameter, change of system package, change of system package version,change of system container, change of system container version, changeof OS version, change of virtual machine, change of system configurationparameter, change of system attribute, change of system resourceallocation, and change of system operational parameter.
 15. The computerimplemented system of claim 2, wherein the plurality of subscribersystems further comprises a second subscriber system, the system beingfurther operable to cause the at least one processor to executeadditional instructions for causing at least one component of thecomputer network to: automatically implement or initiate, based on theanalysis of the crowdsourced telemetry information, a second set ofactivities relating to management of the second subscriber system; andwherein the second set of activities includes automatically anddynamically initiating, based on the analysis of the crowdsourcedtelemetry information, at least one modification of at least oneconfiguration element at the second subscriber system.
 16. Anon-transitory computer usable medium for use in a computer networkcomprising a plurality of subscriber systems, the computer networkincluding at least one processor, the computer usable medium havingcomputer readable code embodied therein, the computer readable codecomprising computer code for causing at least one processor to executeinstructions stored in at least one memory for: accessing firstsubscriber system telemetry information relating to an operatingenvironment of the first subscriber system; identifying, using the firstsubscriber system telemetry information, a first set of configurationelements associated with the first subscriber system; acquiringcrowdsourced telemetry information for a plurality of systems, thecrowdsourced telemetry information including information aboutattributes, characteristics and/or configuration elements relating torespective operating environments of the plurality of systems; analyzingthe first subscriber system telemetry information and the crowdsourcedtelemetry information to dynamically evaluate at least one metricassociated with at least one entity of the first subscriber system,wherein the at least one metric includes at least one performance metricassociated with the at least one entity of the first subscriber system;automatically implementing or initiating, based on the analysis of thefirst subscriber system telemetry information and crowdsourced telemetryinformation, a first set of activities relating to management of thefirst subscriber system; and wherein the first set of activities furtherincludes automatically and dynamically initiating, based on the analysisof the first subscriber system telemetry information and crowdsourcedtelemetry information, at least one modification of at least oneconfiguration element at the first subscriber system.